Mic*_*ael 0 mongodb aggregation-framework
这是我收藏中的一部分json:
[{"company":"Lenovo", "models":
[{"model":"ThinkPad T400", "gens":
[{"gen":"3", "start":2012},
{"gen":"2", "start":2008},
{"gen":"1", "start":2004}]
}...]
}...]
Run Code Online (Sandbox Code Playgroud)
我试图提出一个聚合命令,该命令将返回以下内容:
[{ "_id":"Lenovo",
"models":[{ "model": "ThinkPad T400",
"gens":["1","2","3"]
}...]
}...]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下聚合命令,但是没有用:
db.makes.aggregate([{
$group:{
_id: '$company',
models: { $push: {
model: "$models.model",
gen: "$models.gens.gen"
}}
}
}])
Run Code Online (Sandbox Code Playgroud)
我得到这个结果:
[{ "_id":"Lenovo",
"models":[{ "model": ["ThinkPad T400"],
"gens":[ ["1","2","3"] ]
}...]
}...]
Run Code Online (Sandbox Code Playgroud)
可能是因为每个我的对象都有一个对象数组(模型),而这些对象也有一个对象数组(Gens)。
对MongoDB的正确要求是什么,它将使我得到预期的结果?
试试这个查询:
db.makes.aggregate([
{$unwind : '$models'},
{
$group:{
_id: '$company',
models: { $push: {
model: "$models.model",
gen: "$models.gens.gen"
}}
}
}])
Run Code Online (Sandbox Code Playgroud)
输出将是
{
"_id" : "Lenovo",
"models" : [
{
"model" : "ThinkPad T400",
"gen" : [
"3",
"2",
"1"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |