हां, एग्रीगेशन फ्रेमवर्क का उपयोग करना संभव है।
मान्यताएं
- यहां उपयोग किया गया डेटासेट वही है जिसका उपयोग सूची में टैग वाले दस्तावेज़ प्राप्त करें, मिलान की कुल संख्या के आधार पर किया जाता है
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
}