如何在MongoDB中按日期查询文档?

n9vozmp4  于 2023-08-04  发布在  Go
关注(0)|答案(3)|浏览(103)

我的事件集合存储以下文档:

{
  "_id": {
      "$oid": "537b2a232a47f21830ae5b7b"
  },
  "startTime": {
      "$date": "2014-05-18T21:00:00.000Z"
  },
  "endTime": {
      "$date": "2014-05-18T23:00:00.000Z"
  }
},
{
  "_id": {
    "$oid": "537af8136c4162d0379e2139"
  },
  "startTime": {
    "$date": "2014-05-19T20:30:00.000Z"
  },
  "endTime": {
    "$date": "2014-05-19T21:30:00.000Z"
  }
}

字符串
如何通过特定的startTime查询事件,如下所示:

var startTime = '2014-05-18T20:00:00.000Z';

db.collection.find({startTime: {$eq: startTime}});


我的问题是我需要在查询中忽略时间而只使用日期。如何构造查询?

0ve6wy6x

0ve6wy6x1#

定义一个日期,该日期为要查询的当天的午夜和第二天的午夜。然后使用$lt(小于)和$gt(大于)运算符获取这两个时间点之间的时间跨度内的所有结果。

var from = new Date('2014-05-18T20:00:00.000Z');
var to = new Date('2014-05-19T20:00:00.000Z');

db.collection.find({startTime: {$gt: from, $lt:to}});

字符串

lvmkulzt

lvmkulzt2#

您需要创建Date对象,这应该会有所帮助

var start = new Date(2010, 3, 1);
var end = new Date(2010, 4, 1);

字符串
http://cookbook.mongodb.org/patterns/date_range/

jbose2ul

jbose2ul3#

可以在日期倒置的字段中存储数字。因此,对于2023-06-08这样的日期,您应该存储数字2023 -06- 08。这样,您可以使用以下查询进行搜索:

db.collection.find({ startTime: 20230608 })

字符串
这种方法比使用日期容易得多,并且提高了数据库的性能。

相关问题