Mongodb不等于0不使用聚合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb不等于0不使用聚合相关的知识,希望对你有一定的参考价值。

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

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

答案

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

以上是关于Mongodb不等于0不使用聚合的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 聚合与特定字段不匹配

MongoDB 轻松搞定统计 —— 聚合函数使用

MongoDB 聚合:FieldPath 可能不以 $ 开头

MongoDB查找连接数组

为啥在与数组中的字段匹配时,mongoDB聚合中的查找中的管道不起作用?

Mongodb - 聚合和batchSize - 1分钟后找不到光标