MongoDB:GROUP BY 有条件地聚合布尔字段上的 COUNT

gcpdev

我在 Mongo 中有一个三列集合,例如:

{
    "_id" : ObjectId("5b6db9e1d1b00b1b906c0225"),
    "ip" : "127.0.0.1",
    "hostFqdn" : "host-1",
    "active" : true
},
{
    "_id" : ObjectId("5b6db9e1d1b00b1b906c0226"),
    "ip" : "127.0.0.2",
    "hostFqdn" : "host-1",
    "active" : false
},
{
    "_id" : ObjectId("5b6db9e1d1b00b1b906c0227"),
    "ip" : "127.0.0.3",
    "hostFqdn" : "host-2",
    "active" : true
},
{
    "_id" : ObjectId("5b6db9e1d1b00b1b906c0228"),
    "ip" : "127.0.0.4",
    "hostFqdn" : "host-2",
    "active" : true
},
{
    "_id" : ObjectId("5b6db9e1d1b00b1b906c0229"),
    "ip" : "127.0.0.5",
    "hostFqdn" : "host-2",
    "active" : false
},
{
    "_id" : ObjectId("5b6f61204b0f134f6635a74b"),
    "ip" : "127.0.0.6",
    "hostFqdn" : "host-3",
    "active" : false
}

我需要选择最多具有一个活动 IP 的所有 hostFqdn(即,对于上述数据,响应为host-1host-3)。

我到目前为止是这样的:

db['hosts.status'].aggregate([[{
    "$group": {
        _id: "$hostFqdn",
        "true": {
            "$sum": {
                "$cond": [{ "$lte": [{ "active": "$active" }, 1]}, 1, 0]
            }
        }
    }
}]

但这会返回计数为 0 的所有三个 hostsFqdn。有什么想法吗?

阿什

您可以尝试以下聚合

db.collection.aggregate([
  { "$group": {
    "_id": "$hostFqdn",
    "true": {
      "$sum": {
        "$cond": [{ "$eq": [ "$active", true ]}, 1, 0]
      }
    }
  }}
])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

mongodb聚合与$ project有条件地排除字段

有条件的 COUNT 和 GROUP BY?

如何在mongodb中的聚合期间有条件地投影字段

MongoDB聚合到$ group并有条件地$ addToSet

在mongodb项目聚合中有条件地包含一个字段(_id或其他字段)?

在MongoDB中再次聚合+ $ project + $ group + $ sum + $ count + $ group

有条件求和mongodb聚合

如何基于MongoDB聚合中数组内的另一个字段有条件地为父字段设置值?

单个MongoDB聚合管道中具有条件的总计数和字段计数

MongoDB SELECT COUNT GROUP BY

有条件地排除在 MongoDB 中不起作用的字段

使用新字段插入数据或使用 updateOne mongodb 有条件地更新

在MongoDB中有条件地应用和条件

在聚合查询中具有条件的Mongodb $ lookup

具有条件的Mongodb聚合查找

具有条件的MongoDB组聚合

带有条件和查询值的 Mongodb 聚合

通过在 R 中使用 group by 有条件地聚合,为因子变量的水平生成列

Mongodb有条件地汇总返回数据

有条件地更新mongodb中的多个条目?

MongoDB Mongoose Group by 和 count

带有条件的 MYSQL GROUP BY 2 字段

如何在MongoDB集合中的所有子文档上有条件地设置新字段

MongoDB Count()与聚合

Mongodb 聚合 $count

在Meteor发布中有条件限制Mongodb字段

如果字段是MongoDB中的字符串,如何有条件地将其转换为日期?

如何有条件地从 MongoDB 中的对象数组中删除一个字段?

在GROUP BY上的SQL COUNT