首页 > 解决方案 > mongodb - 日期比较在聚合中不起作用

问题描述

我有以下聚合:

db.runCommand(
  {"aggregate":"Order","pipeline":[
    {"$match":{"shopId":28440395907}},
    {"$match":{"createdAt":{"$gte":{"$date":{"$numberLong":"0"}}}}},
    {"$sort":{"updatedAt":-1}},
    {"$facet":{"results":[{"$skip":0},{"$limit":25}],"count":[{"$count":"count"}]}}
  ],"allowDiskUse":true,"cursor":{}}
);

问题是它无法返回任何结果。用其他任何东西替换日期过滤器会提供结果,所以我的猜测是日期转换存在问题。我尝试了在教程中找到的所有版本(例如 new Date("2015-06-17 10:03:46.000Z")),它的作用始终相同。谁能解释一下为什么以及如何解决?

标签: mongodbmongodb-query

解决方案


日期格式错误,使用符合 ISO-8601 的格式:

new Date("2015-06-17T10:03:46Z")

或者

ISODate("2015-06-17T10:03:46Z")

ISODate()new Date()您在 mongo shell 中的别名。

2015-06-17 10:03:46Z如果您想指定某一天的时间,格式是常用的,但不符合 ISO-8601 标准。


推荐阅读