如何计算与表达式

时间:2015-10-20 09:52:50

标签: mongodb

假设以下MongoDB文档:

{
  "name": "cat 1",
  "desc": "cat 1 desc",
  articles: [] 
},
{
  "name": "cat 2",
  "desc": "cat 2 desc",
  "parent": "cat 1",
  articles: [
    {
      "name": "art 1"
    },
    {
      "name": "art 2"
    }
  ] 
}

现在,我想查询数据库,找到名称包含" art"和类别是" cat 1"。

我希望每个类别下的产品数量都合适,同时保持层次结构,这意味着我希望收到这样的内容:

{
  "name": "cat 1",
  "count": 2
}

聚合框架可以实现吗? 如果现在,我如何构建我的数据库然后支持我的请求?

亲切的问候

1 个答案:

答案 0 :(得分:1)

我不确定为什么你的类别字段,但我认为这是名称字段。

查询:

db.coll.aggregate([ 
    { $match : {"articles.name" : {$regex : ".*art.*"}, "name":"cat 2"} },              
    { $unwind:'$articles'}, 
    { $group: {
        _id : {
             name: "$articles.name",
             category:"$name"
        }, 
        count : { $sum : 1 } 
    }} 
])