方法1: $unwindと$groupを使用する方法
db.collection.aggregate([
{ $unwind: "$votes" },
{ $group: {
_id: "$votes.action",
count: { $sum: 1 }
} }
])
方法2: $reduceを使用する方法
db.collection.aggregate([
{ $project: {
count: {
$reduce: {
input: "$votes",
initialValue: 0,
in: {
$cond: [
{ $eq: ["$$this.action", "up"] },
{ $add: ["$$value", 1] },
"$$value"
]
}
}
}
} }
])
方法3: $filterを使用する方法
db.collection.aggregate([
{ $project: {
count: {
$size: {
$filter: {
input: "$votes",
as: "vote",
cond: { $eq: ["$$vote.action", "up"] }
}
}
}
} }
])
これらの方法を使用することで、配列内のオブジェクトの値をカウントすることができます。それぞれの方法は異なるアプローチを取っていますので、使用環境や要件に応じて最適な方法を選択してください。また、コード例はMongoDBの集計パイプライン内で使用することを想定しています。
以上のように、MongoDBにおける配列内のオブジェクトの値のカウント方法について解説しました。