现在的问题是下一个:
即可通过列表的标签,文档通过匹配的总数排序
但是他们说,这是可能的使用聚合框架,这可能吗?
现在的问题是下一个:
即可通过列表的标签,文档通过匹配的总数排序
但是他们说,这是可能的使用聚合框架,这可能吗?
是的,有可能使用聚合框架。
假设
tags
属性是一组(无重复的元素) 询问
这种方法迫使你放松的结果,并与unwinded结果重新评估匹配谓语,所以它真的效率低下。
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
}