使用Mongoose的Node.js中的MongoDB Aggregate没有得到正确的结果

时间:2015-06-05 08:09:57

标签: node.js mongodb mongoose

我尝试使用聚合来获取ObjectId字段和Date字段的某些特定结果。当我只使用ObjectId来匹配结果时,它可以正常工作,但在添加Date条件后,它只返回任何内容。 这是我的汇总代码:

FlowerAssignment.aggregate({
            $match: {
                class: new MongoTypes.ObjectId(current_class),
                time: {
                    $lte: moment().startOf('month').toDate(),
                    $gte: moment().endOf('month').toDate()
                }
            }
        })
        .project({
            student: 1,
            name: '$studentInfo.name',
            avatar: '$studentInfo.avatar',
            flowerInfo: 1
        }).group({
            _id: '$student',
            name: {
                $first: '$name'
            },
            avatar: {
                $first: '$avatar'
            },
            flowers: {
                $sum: 1
            }
        }).exec(function (err, results) {});

比赛条件有什么不对......我真的没有想法......

1 个答案:

答案 0 :(得分:1)

您的$match对象包含互斥条款,除非它是一个数组,文档的time字段不能同时在月初之前和在月底之后。

我假设你已经倒退了它应该是:

$match: {
    class: new MongoTypes.ObjectId(current_class),
    time: {
        $gte: moment().startOf('month').toDate(),
        $lte: moment().endOf('month').toDate()
    }
}