将字符串字段分隔为mongodb

时间:2018-03-20 13:56:42

标签: json database mongodb aggregation-framework

我有一些文件:

{
    product: "product1",
    version: "1.5"
    uri: "http://...",
    created: "dateisastringpleasedontask",
    ...
}

我想运行一个按产品分类的查询,然后是内部版本。有点像这样:

{
    "product1": [
        "1.0": [ {..}, {..} ],
        "1.5": [ {..} ]
    ],
    "product2": [
        "2.0": [ {..} ]
    ]
}

或者这样的东西,以便我可以先通过产品向下钻取,然后在下面进行修改。

我试图在一次查询操作中使用聚合来实现这一点,所以如果能够实现这一点,那就更好了。

1 个答案:

答案 0 :(得分:1)

尝试以下聚合查询。 $$ROOT访问整个文档,其余是创建产品版本级别结构的组。

db.colname.aggregate([
  {"$group":{
    "_id":{"product":"$product","version":"$version"},
    "data":{"$push":"$$ROOT"}
  }},
  {"$group":{
    "_id":"$_id.product",
    "all":{"$push":{"version":"$_id.version","data":"$data"}}
  }}
])