在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
构造函数作为字符串并将其与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中查询日期的主要内容,如果未能解决你的问题,请参考以下文章
需要 mongodb 查询来检查日期是不是在存储在集合文档中的两个日期之间[重复]