在mongodb中查询日期

时间:2014-10-20 14:52:30

标签: javascript mongodb date

我试图通过一系列日期来查询我的收藏。我试图在查询中使用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}}}

什么都行不通......

你能帮帮我吗?或者解释一下为什么它在每种情况下都不起作用?

1 个答案:

答案 0 :(得分:1)

为什么将Date构造函数作为字符串并将其与startend值连接起来?将Date个对象与"new Date(2014-10-20T15:27:24.110Z)"之类的字符串进行比较是不可行的。

如果startend是纯JavaScript Date对象,您可以使用ISODate帮助器构建ISODate对象进行比较,如下所示:

db.collection.aggregate([
    {$match: {date: {
        $gt: ISODate(start.toISOString()),
        $lt: ISODate(end.toISOString())
    }}},
    {$group: {_id: "$user", count: {$sum: 1}}}
])