Mongodb聚合不适用于$ match之间的匹配

时间:2018-03-04 15:27:54

标签: node.js mongodb

这是我的代码

Bill.aggregate(
    {$unwind:'$detais'},
    { $match : {
        createdOn : {
                $gt : moment().startOf('day'),
                $lt : moment().endOf('day')
            }
        } 
    },
    {
        $group : {
            _id : '$detais.product_id',
            total : { $sum : '$detais.quantity' },
        }
    },
    { $sort :{ total: -1 } }
)
.limit(10)
.exec((err, records) => {
    if (err) {console.log(err)};
    res.send({
        data : records
    });
});  

查询

createdOn : {
        $gt : moment().startOf('day'),
        $lt : moment().endOf('day')
}

在另一个案件中工作正常。

但总的来说是空洞的结果......请有人告诉我我错在哪里......

1 个答案:

答案 0 :(得分:0)

您需要在$and中应用$match条件。

    Bill.aggregate({
            $unwind: '$detais'
        }, {
            $match: {
                createdOn: {
                    $and: [{
                            $gt: moment().startOf('day')
                        },
                        {
                            $lt: moment().endOf('day')
                        }]
                }
            });