在今天的mongodb日期范围内查找文档

时间:2015-03-24 16:29:30

标签: mongodb meteor

我有一个集合Plans。我想找到一个月内的所有东西。以下是数据外观的示例:

{
  "_id": "someid",
  "dateStart": ISODate("2015-03-01T00:00:00Z"),
  "dateEnd": ISODate("2015-03-31T00:00:00Z"),
  "items": [
    "someotherid"
  ]
}

如何找到Plan,使今天的日期介于dateStartdateEnd之间?

2 个答案:

答案 0 :(得分:2)

date1 = new Date('3/1/15');
date2 = new Date('4/1/15');

Plans.find({
  startDate: {$gte: date1},
  endDate: {$lt: date2}
});

Date个对象初始化为00:00:000,因此您可以在此处使用它。另请注意,"少于4/1"相当于"小于或等于3/31" - 但前者更容易写。

另请注意,moment是一个非常方便的实用程序,用于执行此类操作。例如:moment().endOf('month').toDate()

要添加包,请执行以下操作:

$ meteor add momentjs:moment

答案 1 :(得分:2)

要查找计划,使今天的日期在dateStartdateEnd字段之间,请创建一个包含当前日期的日期对象,然后使用$lt$gt查询日期字段上的运算符,以查询今天的日期介于两个字段之间的文档:

currentDate = new Date();
Plans.find({
    dateStart: { $lt: currentDate },
    dateEnd: { $gt: currentDate }
});