У меня есть снимок документа, присутствующего в базе данных, как показано ниже.
{
"_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, которая является родителем модели вложенного документа?
db.collection.aggregate([
{
$match: { "comments._id": ObjectId("624e109b966fbe64b2a80ea9") }
},
{
$unwind: "$comments"
},
{
$match: { "comments._id": ObjectId("624e109b966fbe64b2a80ea9") }
},
{
$replaceWith: "$comments"
}
])
https://mongoplayground.net/p/WmeoKTg8tUS
Это работает очень хорошо, спасибо, но что, если я хочу вставить какой-то другой объект в массив ответов? Как я могу это сделать ?