Node.js MongoDB/Mongoose:find(查询)和aggregate([$match:query])结果在使用日期和$gte/$lte时会有所不同
我使用Mongoose构建聚合管道,匹配工作正常,直到我想使用Node.js MongoDB/Mongoose:find(查询)和aggregate([$match:query])结果在使用日期和$gte/$lte时会有所不同,node.js,mongodb,mongoose,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(qu
$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);
你知道为什么会这样吗
非常感谢 使用聚合时,remove toISOString()聚合不适用于此 这项工作:
var query = {
dueDate: {
$gte: moment()
}
};
write:var query={dueDate:{$lte:new Date()}};然后与toISOString()相同,您将看到差异var query={dueDate:{$lte:new Date().toISOString()};啊,你说得对!但是,矩()不起作用,因为聚合显然需要一个本机日期对象,所以矩().toDate()在我的例子中起作用。不管怎么说,这有点奇怪,不过在查找和聚合方面有所不同。