在mongodb中查询日期

Posted

技术标签:

【中文标题】在mongodb中查询日期【英文标题】:Querying date in mongodb 【发布时间】:2014-12-15 14:38:24 【问题描述】:

我正在尝试按日期范围查询我的收藏。我正在尝试在传递 javascript 日期的查询中使用 ISODate,但它不起作用,我不知道为什么......

我试过了:

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

没有任何效果...

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

【问题讨论】:

MongoDB/Mongoose querying at a specific date?的可能重复 【参考方案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
])

【讨论】:

开始和结束是 javascript 日期。我明天试试 谢谢

以上是关于在mongodb中查询日期的主要内容,如果未能解决你的问题,请参考以下文章

使用 MongoDB 和 Nodejs 插入和查询日期

需要 mongodb 查询来检查日期是不是在存储在集合文档中的两个日期之间[重复]

在日期时间的月、日、年...上查询 Mongodb

在日期时间的月、日、年...上查询 Mongodb

(Python) 按日期查询,在 mongoDB 集合中存储为字符串

日期范围查询 mongodb