Mongodb:如何查询日期范围


您可以使用以下基本语法在 MongoDB 中查询日期范围:

 db.collection.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

此特定查询将返回集合中“day”字段大于 2020-01-21 且小于 2020-01-24 的所有文档。

请注意, $gt表示“大于”, $lt表示“小于”。

您还可以使用$gte表示“大于或等于”,使用$lte表示“小于或等于”。

以下示例展示了如何在具有以下文档的收藏品销售实践中使用此语法:

 db.sales.insertOne({day: new Date(" 2020-01-20 "), amount: 40 })
db.sales.insertOne({day: new Date(" 2020-01-21 "), amount: 32 })
db.sales.insertOne({day: new Date(" 2020-01-22 "), amount: 19 })
db.sales.insertOne({day: new Date(" 2020-01-23 "), amount: 29 })
db.sales.insertOne({day: new Date(" 2020-01-24 "), amount: 35 })

示例 1:搜索两个日期之间的文档

我们可以使用以下代码来查找“day”字段位于两个特定日期之间的所有文档:

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

该查询返回以下两个文档:

 { _id: ObjectId("618548bc7529c93ea0b41490"),
  day: 2020-01-22T00:00:00.000Z,
  amount: 19 }

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

示例 2:搜索特定日期之后的文档

我们可以使用下面的代码来查找“day”字段在特定日期之后的所有文档:

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-22 ")
    }
})

该查询返回以下两个文档:

 { _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

{ _id: ObjectId("618548bc7529c93ea0b41492"),
  day: 2020-01-24T00:00:00.000Z,
  amount: 35 }

示例 3:搜索特定日期之前的文档

我们可以使用下面的代码来查找“day”字段在特定日期之前的所有文档:

 db.sales.find({
    day: {
        $lt : ISODate(" 2020-01-22 ")
    }
})

该查询返回以下两个文档:

 { _id: ObjectId("618548bc7529c93ea0b4148e"),
  day: 2020-01-20T00:00:00.000Z,
  amount: 40 }

{ _id: ObjectId("618548bc7529c93ea0b4148f"),
  day: 2020-01-21T00:00:00.000Z,
  amount: 32 }

注意:您可以在此处找到ISODate()函数的完整文档。

其他资源

以下教程解释了如何在 MongoDB 中执行其他常见查询:

MongoDB:如何使用“Like”正则表达式进行查询
MongoDB:如何检查字段是否包含字符串

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注