在mongodb中查找特定日期的数据

时间:2014-08-20 02:16:47

标签: mongodb mongodb-query

我想从MongoDB集合中查找2014-08-01的数据。 MongoDB中的日期是ISO格式。我写下面的查询,但它给了我非常大的数字,我怀疑它不是1天的数据。有人可以让我知道查询有什么问题。 sd是关键

db.history.count({sd:{$gte: new Date("2014-08-01")},sd:{$lt:new Date("2014-08-01")}})

2 个答案:

答案 0 :(得分:5)

可以使用同一文档部分中的$gte$lt指定范围:

db.history.count({ "sd": {
    "$gte": new Date("2014-08-01"), "$lt": new Date("2014-08-02")
}})

否则该参数被认为是独立的并且是逻辑“和”条件。但实际上,因为您在“sd”字段中使用相同的“密钥”,所以在JSON / BSON文档中不允许这样做,并且违反了哈希结构的“唯一”密钥规则。因此,一个条件会覆盖另一个条件,只会应用一个条件。

这就是你的结果错误的原因。请使用上面显示的内容。

答案 1 :(得分:0)

await model.find(
  {
    $or:
   [
     {
       createdDate:
      { $gte: new Date(startDate), $lte: new Date(endDate) },
     },
     {
       createdDate:
      { $gte: new Date(startDate), $lte: new Date(endDate).setDate(new Date(endDate).getDate() + 1) },
     },
   ],
  },
)

请为startDate和endDate分配值。上面的示例将有助于查找来自不同日期和同一日期的不同数据 例如,如果您尝试从“ 2020-06-22”到“ 2020-07-02”获取数据,则将从该日期范围中获取数据,其他人则尝试在该代码将对该机制起作用的同一日期获取数据也

谢谢