#mongodb #mongoose
Вопрос:
У меня есть этот формат документа
И у меня есть несколько документов с одинаковым идентификатором, но разным содержимым, поэтому я хочу сгруппировать их по идентификатору и поместить все содержимое в массив
Я попробовал это
$group : { "_id": "$_id", "contents": { $push: "$contents" } }
но это приносит мне только два поля (_id и содержимое)
Как мне сделать запрос, чтобы сгруппировать содержимое в массив и при этом показать мне все остальные поля с тем же идентификатором?
Комментарии:
1. Мне любопытно… Как получить
_id
несколько раз, если они по умолчанию уникальны ? Как в базе данных могут быть документы с одинаковым идентификатором _id?2. Потому что в совокупном запросе я сделал
$unwind : "$contents"
Ответ №1:
попробуйте это
db.foo.aggregate([
{
$group: {
"_id": "$_id",
"contents": { $push: "$contents" },
users: { $first: "$users" },
owners: { $first: "$owners" },
name: { $first: "$name" },
category: { $first: "$category" },
course: { $first: "$course" },
// and remaining fields
}
}
])