SaisJS - $ match中的条件不起作用

时间:2017-11-06 12:27:57

标签: mongodb sails.js sails-mongo

这就是我的代码的样子:

User.native(function (err, collection) {
        if (err) throw err;
        collection.aggregate([
            {
                $match: {
                    id: req.params.id,
                    createdAt: {">=": start, "<=": end}
                }
            },
            {
                $group: {
                    _id: "$class",
                    count: {$sum: 1},
                    jointime: {$max: "$endtime"}
                }
            }
        ]

createdAt是我按时间过滤收集的内容,但在我这样做之后,没有返回任何结果。

我认为它是由日期类型引起的,因为createdAt是MongoDB中的日期。但是当我尝试使用它时,我可以获得正确的数据。

User.find({}, {id: req.params.childid, createdAt: {">=": start, "<=": end}}, function (err, result) {
        console.log("CreatedAt: " + result[0].createdAt);
        console.log("Result length: " + result.length);
    });

所以,我认为这与约会毫无关系。 aggregate中有什么不同吗?

1 个答案:

答案 0 :(得分:0)

您应该在$gte运算符中使用$lte$match代替“&gt; =”和“&lt; =”。

 $match: {
         id: req.params.id,
         createdAt: {$gte: start, $lte: end}
 }