Consider the below MongoDB collection
[
{
_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
}
}
]
Let's say the above documents are in the mongodb collection and I want to retrive the max link that has the more number.
For example:
So here the highest number is for key "whatsapp.com" I need this key and total sum 11
Thanks in advance
$objectToArray convert links object to key-value format array of object$unwind to deconstruct the links array$group by links name and count total value$sort by total value in descending order$limit 1 to select single documentdb.collection.aggregate([
{ $addFields: { links: { $objectToArray: "$links" } } },
{ $unwind: "$links" },
{
$group: {
_id: "$links.k",
count: { $sum: "$links.v" }
}
},
{ $sort: { count: -1 } },
{ $limit: 1 }
])