[英]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
阶段以过滤$facet
中accept_one
和reject_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
}
}
}
],
}
}
])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.