使用 mongoDB 聚合循环遍历对象数组以在检查条件后计算文档数
Looping through array of objects using mongoDB aggregation to count number of documents after checking conditions
我正在尝试在 mongoDb 中编写聚合查询,我想在其中循环对象数组并获取满足特定条件的对象的数量。
我有一个名为 banks[] 的数组,其中包含 28-30 个对象。我想检查每个对象中是否存在“pdf”键并检查该值是真还是假,并且 return 只计算那些值为真的对象。我如何使用聚合来做到这一点?请帮忙。以下是 banks[] 数组中的示例数据。
banks[{id:1, name: "ABC","pdf": true},{id:2, name:"PQR"}, {id:3, name:"XYZ", pdf:"false"}....]
同样,数组有 30 个对象。
我想要的上述示例的输出是
{id:"1", count:1}
提前致谢!
您可以使用 $size
来获取数组的计数。 $filter
用于根据条件过滤
{
"$project": {
count: {
$size: {
$filter: {
input: "$banks",
cond: {
$eq: [
"$$this.pdf",
true
]
}
}
}
}
}
}
我正在尝试在 mongoDb 中编写聚合查询,我想在其中循环对象数组并获取满足特定条件的对象的数量。 我有一个名为 banks[] 的数组,其中包含 28-30 个对象。我想检查每个对象中是否存在“pdf”键并检查该值是真还是假,并且 return 只计算那些值为真的对象。我如何使用聚合来做到这一点?请帮忙。以下是 banks[] 数组中的示例数据。
banks[{id:1, name: "ABC","pdf": true},{id:2, name:"PQR"}, {id:3, name:"XYZ", pdf:"false"}....]
同样,数组有 30 个对象。
我想要的上述示例的输出是
{id:"1", count:1}
提前致谢!
您可以使用 $size
来获取数组的计数。 $filter
用于根据条件过滤
{
"$project": {
count: {
$size: {
$filter: {
input: "$banks",
cond: {
$eq: [
"$$this.pdf",
true
]
}
}
}
}
}
}