【发布时间】:2018-11-04 15:41:55
【问题描述】:
在 mongodb 中,我有这样的数据结构:
{
"data" : [
{
"car" : [
{
"model" : "aaa",
},
{
"model" : "bbb",
},
{
"model" : "ccc",
}
],
"user" : {
"id" : "123"
}
}
],
}
我想对汽车模型字段进行分组和计数。所以首先我尝试了这样的 unwind 方法:
.aggregate([
{ $project: {"data.car.model":1, "data.user.id":1} },
{ $unwind: {
path: "$data.car",
preserveNullAndEmptyArrays: true
} },
{ $group: {
_id: "$data.car.model",
count: { $sum: 1 }
} }
])
但结果是:
{
"_id" : [ ["aaa", "bbb", "ccc"] ],
"count" : 1.0
}
这不是我想要的,因为模型没有展开。我希望的结果是:
[{_id:"aaa",count:1}, {_id:"bbb",count:1}, {_id:"ccc", count:1}]
然后通过查看 mongodb unwind array nested inside an array of documents,我尝试了$project嵌套数组:
.aggregate([
{ $project: {"car":"$data.car.model", "user":"$data.user.id"} },
])
但结果是:
{
"car" : [ ["aaa", "bbb", "ccc"] ],
"user" : ["123"]
}
如您所见,汽车和用户被嵌入到一个数组中,我仍然无法应用 $unwind 方法。但是,我希望它应该是这样的:
{
"car" : ["aaa", "bbb", "ccc"],
"user" : "123"
}
我使用的mongo是3.2,我在网上搜索了很多但没有找到答案。有可能吗?
【问题讨论】:
标签: mongodb mongodb-query