简体   繁体   English

如何使用 mongodb 在聚合中计算布尔值

[英]How to count boolean value in aggregation with mongodb

Here is my query to get count of only true in accept_one (boolean type) reject_one (boolean type) value in collection of Mongodb.这是我的查询,用于获取Mongodb 集合中的 accept_one 布尔类型) reject_one (布尔类型)值中的唯一计数。

Collection looks like:集合看起来像:

 {accept_one:true,
    reject_one: true,
    desc:"abcd"

    }
    {accept_one:false,
    reject_one: false
    desc:"efghi"
    },
    {accept_one:true,
    reject_one: true,
    desc:"efghi"
    },
    {accept_one: false,
    reject_one: false,
    desc:"abcd"
    },
     {accept_one: true,
    reject_one: false,
    desc:"abcd"
    },
    {accept_one: false,
        reject_one: true,
        desc:"xyz"
        }

Here is my query:这是我的查询:

db.aggregate([
            {
              $facet: {
                 "accept_one": [
                   { $group: { _id: '$accept_one', c: { $sum:1 } }
                 ],
                 "reject_one": [
                   { $group: { _id: '$reject_one', c: { $sum: 1 } } }
                 ],
                 "desc": [
                   { $group: { _id: '$desc', c: { $sum: 1 } } }
                 ],
                 }
    }
 ])

By this query every value whether if it's false or true it returns me count of every false and true but I only want to count true in fields, I mentioned above.通过这个查询每个值,无论它是false还是true ,它都会返回每个 false 和 true 的计数,但我只想在字段中计数true ,我在上面提到过。

Expecting Output:期望输出:

[
accept_one:{
_id:true,
c: 3
},
reject_one: {
_id: true,
c: 3
}
]

Add $match stage to filter true value for accept_one and reject_one in $facet .添加$match阶段以过滤$facetaccept_onereject_one的真实值。

db.collection.aggregate([
  {
    $facet: {
      "accept_one": [
        {
          $match: {
            "accept_one": true
          }
        },
        {
          $group: {
            _id: "$accept_one",
            c: {
              $sum: 1
            }
          }
        }
      ],
      "reject_one": [
        {
          $match: {
            "reject_one": true
          }
        },
        {
          $group: {
            _id: "$reject_one",
            c: {
              $sum: 1
            }
          }
        }
      ],
      "desc": [
        {
          $group: {
            _id: "$desc",
            c: {
              $sum: 1
            }
          }
        }
      ],
      
    }
  }
])

Sample Mongo Playground示例 Mongo Playground

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM