MongoDB / Mongoose:使用日期和$ gte / $ lte时,find(查询)和聚合([$ match:query])结果不同

时间:2014-11-14 08:18:18

标签: node.js mongodb mongoose

我使用Mongoose构建聚合管道,匹配工作正常,直到我想使用$gte$lte运算符匹配日期。奇怪的是,如果我在常规find()中使用匹配查询,它会按预期工作:

var query = {
  dueDate: {
    $gte: moment().toISOString() // I've also tried using $date { ... }
  }
};

// finds entries matching the query [..., ...]
Model.find(query, callback);

但是,使用$match和相同查询进行聚合不会:

var aggregation = [{
  $match: query
}];

// finds no entries (using the same query) []
Model.aggregate(aggregation, callback);

为什么会出现这种情况?

非常感谢!

1 个答案:

答案 0 :(得分:3)

使用聚合时删除toISOString()聚合不适用于此

这有效:

var query = {
  dueDate: {
    $gte: moment()
  }
};