MongoDB группирует документ по идентификатору, в котором отображаются все значения

#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
            }
        }
    ])