Aggregationgroupsum中判断存在则加一否则加零
在Aggregation.group.sum中,如果要判断某个字段的值是否存在,然后根据存在与否来进行加一或加零的操作,可以使用$cond操作符结合$gt操作符来实现。
假设我们有一个集合students,包含以下文档:
{ "_id": 1, "name": "John", "score": 80 }, { "_id": 2, "name": "Alice" }
我们想要根据score字段的存在与否,来对score进行累加操作。如果score存在,则加一,否则加零。
可以使用以下聚合管道操作实现:
db.students.aggregate([ { $group: { _id: null, totalScore: { $sum: { $cond: { if: { $gt: ["$score", null] }, then: 1, else: 0 } } } } } ])
这个聚合操作会返回一个名为totalScore的字段,该字段的值为score字段存在的文档数。
在上述例子中,totalScore的值为1,因为只有一个文档中的score字段存在。
希望以上解答能帮到你
原文地址: https://www.cveoy.top/t/topic/hDy1 著作权归作者所有。请勿转载和采集!