我有一些文件:
{
product: "product1",
version: "1.5"
uri: "http://...",
created: "dateisastringpleasedontask",
...
}
我想运行一个按产品分类的查询,然后是内部版本。有点像这样:
{
"product1": [
"1.0": [ {..}, {..} ],
"1.5": [ {..} ]
],
"product2": [
"2.0": [ {..} ]
]
}
或者这样的东西,以便我可以先通过产品向下钻取,然后在下面进行修改。
我试图在一次查询操作中使用聚合来实现这一点,所以如果能够实现这一点,那就更好了。
答案 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"}}
}}
])