#mongodb #nosql
Есть коллекция с документами вида:
{
"_id" : ObjectId("56e17f2db292c9151a8b459b"),
"title" : "test title",
"category" : "test category",
"pubDate" : "1457599100",
"code" : "ZZZ"
},
{
"_id" : ObjectId("56e17f2db292c9151a8b459b"),
"title" : "test 2 title",
"category" : "test 2 category",
"pubDate" : "1457599200",
"code" : "ZZZ"
}
Как сделать группировку, чтобы получить на выходе что-то типа этого:
{
"ZZZ": {
"items": {
0:{
"_id" : ObjectId("56e17f2db292c9151a8b459b"),
"title" : "test title",
"category" : "test category",
"pubDate" : "1457599100"
},
1:{
"_id" : ObjectId("56e17f2db292c9151a8b459b"),
"title" : "test 2 title",
"category" : "test 2 category",
"pubDate" : "1457599100"
}
}
}
}
Ответы
Ответ 1
Используйте Aggregation Framework и оператор $group: db.test.aggregate([ { $group: { _id: "$code", "items": { $push: { "_id": "$_id", "title": "$title", "category": "$category", "pubDate": "$pubDate" } } } } ]) Результат запроса: [ { "_id" : "ZZZ", "items" : [ { "_id" : ObjectId("56e17f2db292c9151a8b459b"), "title" : "test title", "category" : "test category", "pubDate" : "1457599100" }, { "_id" : ObjectId("56e17f2db292c9151a8a459b"), "title" : "test 2 title", "category" : "test 2 category", "pubDate" : "1457599200" } ] } ] Полученный результат слегка отличается от запрошенного, но, в целом, можно настроить его, поработав с $project.
Комментариев нет:
Отправить комментарий