Поскольку MongoDB обеспечивает $group
подход в агрегированном конвейере, он возвращает список документов, где _id
содержит некоторое «отличное» значение группировки, а другое поле - массив документов, сгруппированных по заданному условию.
Мне нужно вернуть один документ, в котором свойства являются результатами агрегации.
Пример коллекции:
{author: "Author1", title: "Title1"}
{author: "Author2", title: "Title2"}
{author: "Author2", title: "Title3"}
Агрегация
db.getCollection('books').aggregate([
{"$group": {
_id: "$author",
books: { $push: "$$ROOT" }
}
}
])
Это дает мне следующий вывод:
{_id: 'Author1', books: [{author: "Author1", title: "Title1"}]},
{_id: 'Author2', books: [{author: "Author2", title: "Title2"}, {author: "Author2", title: "Title3"}]}
Но я хотел бы получить результаты как один отдельный объект, подобный этому:
{
Author1: [
{author: "Author1", title: "Title1"}
],
Author2: [
{author: "Author2", title: "Title2"},
{author: "Author2", title: "Title3"}
]
}
Проще говоря, я хочу использовать _id
свойство как новое поле в результирующем документе, а правильные $group
значения для конкретной _id
должны быть значениями новой переменной.
Если кто-то сталкивался с такими запросами, пожалуйста, помогите с этим или дайте некоторые подсказкикак это решить.Заранее спасибо.