В mongodb у меня есть такая структура данных:
{
"data" : [
{
"car" : [
{
"model" : "aaa",
},
{
"model" : "bbb",
},
{
"model" : "ccc",
}
],
"user" : {
"id" : "123"
}
}
],
}
И я хочу сгруппировать и посчитать поле модели автомобиля.Итак, сначала я попробовал метод раскрутки следующим образом:
.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, вложенный в массив документов , я попробовал $ project для вложенного массива:
.aggregate([
{ $project: {"car":"$data.car.model", "user":"$data.user.id"} },
])
Но результат таков:
{
"car" : [ ["aaa", "bbb", "ccc"] ],
"user" : ["123"]
}
Как видите, машина и пользователь были встроены в массив, который я до сих пор не могу применить метод $ unwind.Тем не менее, я надеюсь, что это будет выглядеть так:
{
"car" : ["aaa", "bbb", "ccc"],
"user" : "123"
}
Монго, которое я использую, - 3.2, я много искал в Интернете, но не нашел ответа.Есть ли возможность сделать это?