Mongodb不等于0不使用聚合

时间:2017-12-18 15:52:26

标签: mongodb mongoose mongodb-query aggregation-framework

我正在使用mongodb。

我正在使用聚合查询。我在其中添加$match管道以匹配子文档。

var aggregatePipes= [{ "$unwind": "$payload" }, { "$sort": { "payload.r": 1 } }];     
aggregatePipes.push({ '$match': { 'payload.r': { '$ne': 0 } } });

我的文档就像这样

{
    "_id" : ....,
    "activationId" : ....,
    "parentActivationId" : ....),
    "m" : "c9:8c:2f:61:e7:f8",
    "status" : "new",
    "payload" : [ 
        {
            "r" : -67,
            "t" : ISODate("2017-12-18T11:42:43.964Z")
        }, 
        {
            "r" : 0,
            "t" : ISODate("2017-12-18T11:42:47.073Z")
        }
    ],
    "createdAt" : ISODate("2017-12-18T11:43:51.732Z"),
    "updatedAt" : ISODate("2017-12-18T11:43:51.732Z"),
    "deviceId" : "DEVICEID"
}

如果我使用任何数字而不是0,那么它可以正常工作。但是不能使用0。

谁能告诉我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

JS可能会在mongo的某些条件下将$ne: 0解析为$ne == false。您可以尝试使用$ne: Number( 0 )代替

来解决此问题