जैसा कि मैंने MongoDB में उत्तर दिया है, एक सरणी में खोज करें और मैचों की संख्या के अनुसार क्रमबद्ध करें
एकत्रीकरण फ्रेमवर्क का उपयोग करना संभव है।
मान्यताएं
tags
विशेषता एक सेट है (कोई दोहराए गए तत्व नहीं)
क्वेरी
यह दृष्टिकोण आपको परिणामों को खोलने के लिए मजबूर करता है और अनचाहे परिणामों के साथ मैच विधेय का पुनर्मूल्यांकन करता है, इसलिए यह वास्तव में अक्षम है।
db.test_col.aggregate(
{$match: {tags: {$in: ["shirt","cotton","black"]}}},
{$unwind: "$tags"},
{$match: {tags: {$in: ["shirt","cotton","black"]}}},
{$group: {
_id:{"_id":1},
matches:{$sum:1}
}},
{$sort:{matches:-1}}
);
अपेक्षित परिणाम
{
"result" : [
{
"_id" : {
"_id" : ObjectId("5051f1786a64bd2c54918b26")
},
"matches" : 3
},
{
"_id" : {
"_id" : ObjectId("5051f1726a64bd2c54918b24")
},
"matches" : 2
},
{
"_id" : {
"_id" : ObjectId("5051f1756a64bd2c54918b25")
},
"matches" : 1
}
],
"ok" : 1
}