【问题标题】:Querying date in mongodb在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}}}

没有任何效果...

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

【问题讨论】:

标签: javascript mongodb 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 日期。我明天试试 谢谢
猜你喜欢
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 2023-03-09
  • 2013-03-16
  • 2020-04-17
  • 1970-01-01
相关资源
最近更新 更多