[英]MongoDB aggregate, group and count in subdocuments
我有点卡在这里......我一直在关注 MongoDB 文档:
{
"_id": {
"$oid": "63a3023e71a56a599007613b"
},
"image_uuid": "b9ff04d68b954ea390c8aa83644d5d08",
"votes": {
"42ceac05112d4092ad0d1f244a0016dd": {
"created": {
"$date": {
"$numberLong": "1671627387000"
}
},
"vote": "up"
},
"42ceac05112d4092ad0d1f244a0016de": {
"created": {
"$date": {
"$numberLong": "1671627351000"
}
},
"vote": "down"
}
}
}
有什么方法可以按“投票”进行分组和计数吗? 我只对本文档中所有“向上”和“向下”的总和感兴趣。
谢谢,巴斯蒂安
尝试了在 Stackoverflow 上找到的所有可能示例,但我对 MongoDB 还很陌生。
试试这个:
db.collection.aggregate([
{ $set: { votes: { $objectToArray: "$votes" } } },
{
$project: {
counts: {
up: { $size: { $filter: { input: "$votes.v", cond: { $eq: ["$$this.vote", "up"] } } } },
down: { $size: { $filter: { input: "$votes.v", cond: { $eq: ["$$this.vote", "down"] } } } }
}
}
}
])
Wernfrieds 的回答成功了,非常感谢,我的问题是。 我不知道如何将一堆对象转换为数组...
谢谢大家,圣诞快乐,新年快乐! 巴斯蒂安
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.