通过使用 $cond 来确定一些东西,但为什么 $cond 总是为真?

By using $cond to determine something, but why $cond is always true?

  1. 我试图找到不包含 key 和 low 字段的文档总数。但它总是 returns true 并且结果是文档总数。 确实存在这样的文档不包含这两个字段。

  2. 这是我试过的代码:

     db.test.aggregate([
    { "$group": {
             "_id" : { user_id: "$id" },
              "a": { 
                "$sum": {
    
            "$cond": [ {
            $and:[{low:null},{ key:null}]
            } , 1, 0
            ]
         } 
         },
    
       "b": { "$sum": {
                 "$cond": [ { "$ifNull": ["$key", false] }, 1, 0 ]
             } },
             "c": { "$sum": {
                 "$cond": [ { "$ifNull": ["$low", false] }, 1, 0 ]
             } },
           } },
           { "$project": {
             "_id": 0,
             "a": 1,
             "b": 1,
             "c": 1
           } }
            ])
    

$cond 表达式中您需要使用聚合运算符,而不是查询语法。

而不是 {low:null} 使用 {$eq:["$low",null]}key 测试也是如此。