date $匹配mongodb中的聚合函数

时间:2015-04-22 07:59:39

标签: mongodb

我想在mongo db中用$ match(where)条件编写一个查询。我没有任何选项只能在这里匹配日期。 查询在

下面
db.LockContentAccess.aggregate([
                            {$match : {AccessDate:{$eq : new Date()}}},
                            {"$project" : 
                                     { .... }
                            }
                              ]);

这里的问题是我没有选择只匹配日期部分,比如sql查询(不是时间)。

请问任何人可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

类名Date有点误导,因为它不仅代表日历日,还包括精确到毫秒的时间。因此,当您使用$eq : new Date()查询它们时,您将只获得具有此毫秒的日期字段的文档。当您需要一整天的文档时,有三种可能的解决方法。

  1. 当您只需要具有日精度的日期时,将时间设置为0:00:00.000,将文档中的日期截断为午夜。查询日期时,请创建一个新的Date对象,该对象的时间也设置为0:00:00.000
  2. 使用$gte: [todays date with time 0:00:00.000]$lte [todays date with time 23:59:59.999]查询一系列日期。这是我建议你做的,因为它保留了你需要它用于其他用例的确切时间。
  3. 抛弃整个内置日期处理内容并将日期存储为一个整数,表示自过去特定日期起经过的天数。我不建议这样做,但如果您确定不需要任何the special features MongoDB offers for date handling,则可以选择。
  4. 如何更改new Date()对象的时间取决于您使用的编程语言。