考虑下面的MongoDB集合
[
{
_id: 123,
links: {
"google.com": 3,
"facebook.com": 4,
"whatsapp.com": 6
}
},
{
_id: 123,
links: {
"google.com": 4,
"facebook.com": 6,
"yahoo.com": 8
}
},
{
_id: 123,
links: {
"mail.com": 3,
"twitter.com": 4,
"whatsapp.com": 5
}
}
]
假设上面的文档在mongodb集合中,我想检索具有更多数量的最大链接。
例如:
- "google.com">
- "facebook.com">
- "whatsapp.com">
- "yahoo.com"有10
- "mail.com"有3个
- "twitter.com"有4个
这里的最大值是关键字whatsapp。com"我需要这把钥匙和总金额11
提前谢谢
$objectToArray
将links
对象转换为对象的键值格式数组$unwind
解构links
数组$group
按链接名称和计数的总价值$sort
按总值降序排列$limit
1选择单个文件
db.collection.aggregate([
{ $addFields: { links: { $objectToArray: "$links" } } },
{ $unwind: "$links" },
{
$group: {
_id: "$links.k",
count: { $sum: "$links.v" }
}
},
{ $sort: { count: -1 } },
{ $limit: 1 }
])
游乐场