如何获得在MongoDB集合中嵌套对象内具有最大值的键?



考虑下面的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
提前谢谢

  • $objectToArraylinks对象转换为对象的键值格式数组
  • $unwind解构links数组
  • $group按链接名称和计数的总价值
  • $sort按总值降序排列
  • $limit1选择单个文件
db.collection.aggregate([
{ $addFields: { links: { $objectToArray: "$links" } } },
{ $unwind: "$links" },
{
$group: {
_id: "$links.k",
count: { $sum: "$links.v" }
}
},
{ $sort: { count: -1 } },
{ $limit: 1 }
])

游乐场

最新更新