Mongodb不等于0不使用聚合

问题描述 投票:0回答:1

我正在使用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。

有谁能告诉我,我在这里失踪了什么?

mongodb mongoose mongodb-query aggregation-framework
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.