我正在尝试按日期范围查询我的收藏。我试图在查询中使用 ISODate 传递 JavaScript 日期,但它不起作用,我不知道为什么......
我已经尝试过:
db.collection.aggregate {date: {$gt: 'new Date(' + start.toISOString() + ')', $lt: 'new Date(' + end.toISOString() + ')'}}, {"$group": {_id: "$user", count: {$sum: 1}}}
db.collection.aggregate {date: {$gt: 'ISODate(' + start.toISOString() + ')', $lt: 'ISODate(' + end.toISOString() + ')'}}, {"$group": {_id: "$user", count: {$sum: 1}}}
db.collection.aggregate {date: {$gt: 'ISODate(' + start + ')', $lt: 'ISODate(' + end + ')'}}, {"$group": {_id: "$user", count: {$sum: 1}}}
db.collection.aggregate {date: {$gt:start, $lt: end}}, {"$group": {_id: "$user", count: {$sum: 1}}}
没有任何效果...
你能帮我吗?或者解释一下为什么它在每种情况下都不起作用?
最佳答案
为什么将 Date
构造函数作为字符串并将其与 start
、end
值连接起来?将 Date
对象与 "new Date(2014-10-20T15:27:24.110Z)"
等字符串进行比较肯定行不通。
如果 start
、end
是纯 JavaScript Date
对象,您可以使用以下方法构造 ISODate
对象进行比较ISODate
帮助器如下所示:
db.collection.aggregate([
{$match: {date: {
$gt: ISODate(start.toISOString()),
$lt: ISODate(end.toISOString())
}}},
{$group: {_id: "$user", count: {$sum: 1}}}
])
关于javascript - mongodb中查询日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468607/