如何解决通过使用$ cond确定某些内容,但是为什么$ cond始终为真?
-
我试图查找不包含key和low字段的文档总数。但是它总是返回true,结果是文档总数。 确实存在此类文档不包含两个字段。
-
这是我尝试的代码:
db.test.aggregate([ { "$group": { "_id" : { user_id: "$id" },"a": { "$sum": { "$cond": [ { $and:[{low:null},{ key:null}] },1,0 ] } },"b": { "$sum": { "$cond": [ { "$ifNull": ["$key",false] },0 ] } },"c": { "$sum": { "$cond": [ { "$ifNull": ["$low",} },{ "$project": { "_id": 0,"a": 1,"b": 1,"c": 1 } } ])
解决方法
在$cond
表达式中,您需要使用聚合运算符,而不是查询语法。
使用{low:null}
代替{$eq:["$low",null]}
,并且使用key
测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。