Как запросить вложенный документ, если в мангусте указан только _id вложенного документа?

У меня есть снимок документа, присутствующего в базе данных, как показано ниже.

{
        "_id" : ObjectId("624e105df043d4ad4ee893ee"),
        "title" : "First post",
        "author" : "Rituparna",
        "comments" : [
                {
                        "content" : "First comment",
                        "author" : "Ritu",
                        "_id" : ObjectId("624e109b966fbe64b2a80ea9"),
                        "replies" : [ ]
                },
                {
                        "content" : "second comment",
                        "author" : "Ritu",
                        "_id" : ObjectId("624e10a4e33f7962d0002f39"),
                        "replies" : [ ]
                }
        ],
        "__v" : 0
}

Теперь предположим, что вам дан только _id комментария, скажем, первого комментария 624e109b966fbe64b2a80ea9

Конечный результат, который я ищу,

{
    "content" : "First comment",
    "author" : "Ritu",
    "_id" : ObjectId("624e109b966fbe64b2a80ea9"),
    "replies" : [ ]
}

Какой запрос мне нужно написать, когда мне дают только _id комментария и модель Post, которая является родителем модели вложенного документа?

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
db.collection.aggregate([
  {
    $match: { "comments._id": ObjectId("624e109b966fbe64b2a80ea9") }
  },
  {
    $unwind: "$comments"
  },
  {
    $match: { "comments._id": ObjectId("624e109b966fbe64b2a80ea9") }
  },
  {
    $replaceWith: "$comments"
  }
])

https://mongoplayground.net/p/WmeoKTg8tUS

Это работает очень хорошо, спасибо, но что, если я хочу вставить какой-то другой объект в массив ответов? Как я могу это сделать ?

Rituparna Warwatkar 07.04.2022 08:42

Другие вопросы по теме