Mongo按国家和标签数组汇总

时间:2016-06-07 13:07:36

标签: node.js mongodb aggregation-framework

我使用聚合来解决这个问题,我的标签和国家/地区都有类别,标签是标签数组,国家/地区是字符串。

{
"_id" : ObjectId("54c8e2a72ec614e33c20595a"),
"__v" : 0,
"category_id" : 3,
"country" : "ar",
"name" : "Niños",
"tags" : [ 
    "juvenil",
    "nino",
    "ninos",
    "niño",
    "escolar",
    "escolares",
    "cartuchera",
    "unibike",
],
"parent" : ObjectId("54c8e2a72ec614e33c20594b"),
"updated_at" : ISODate("2016-06-06T15:13:26.659Z"),
"status" : true,
"slug" : "ropa-de-ninos",
"class" : "kids",
"order" : ""
}

我正在做一个

的聚合
db.getCollection('categories').aggregate([ 
{ '$match': 
    { tags: 
        { 
            '$in': [ 
                'ninos', 
                'escolar'
            ] 
        },
      country: 'ar' 
    }
},
{ '$project': 
    { 
        name: 1, 
        parent: 1, 
        country: 1, 
        tags: 1 
     } 
},
{ '$unwind': '$tags' },

{ 
    '$group': 
    { _id: '$_id', names: { '$push': '$tags' }, matches: { '$sum': 1 } } 
},
{ '$sort': { matches: -1 } } 
])

现在,如果你查看查询我同时拥有一个标签$ in和一个国家匹配,现在同时打开,我没有结果,但是如果我带走了这个国家,那就完美了。

我做错了什么?我似乎无法解决这个问题,我已经尝试将$ match分开,将国家放在第一位,然后在放开标签后再匹配。

0 个答案:

没有答案