आप इसे mongoDB में एग्रीगेशन फ्रेमवर्क का उपयोग करके कर सकते हैं। (संस्करण 2.2 में नया)।
आपके पास उपयोगकर्ता के समुदायों की सरणी उपलब्ध होनी चाहिए। मैं इसे इस उदाहरण में userComms कहूंगा - मैं उम्मीद कर रहा हूं कि यह उसी प्रकार के मानों के साथ एक सरणी हो जो post.communities हैं।
db.posts.aggregate( [
{
"$unwind" : "$communities"
},
{
"$match" : {
"communities" : {
"$in" : userComms
}
}
},
{
"$group" : {
"_id" : "$_id",
"relevance" : {
"$sum" : 1
}
}
},
{
"$sort" : {
"relevance" : -1
}
}
]);
यह प्रपत्र का एक दस्तावेज़ लौटाता है:
{
"result" : [
{
"_id" : 1,
"relevance" : 4
},
{
"_id" : 6,
"relevance" : 3
},
...
]
}
परिणाम सरणी में पोस्ट के _ids होते हैं और प्रासंगिक समुदायों की संख्या को जोड़कर गणना की जाती है जो उपयोगकर्ता के साथ समान थे। फिर इसे उस राशि के अनुसार क्रमबद्ध (अवरोही) किया जाता है।