Как получить ожидаемый результат от MongoDB?

Я новичок в агрегации MongoDB. Я не получаю желаемого результата Результат, который я получаю от агрегации: -

[
{tweet:{key:value}},
{tweet:{key:value}},
{tweet:{key:value}},
{tweet:{key:value}},
]

но мне нужен следующий вывод из конвейера: -

[
{key:value},
{key:value},
{key:value},
]

и, наконец, конвейер, который я запускаю: -

const pipeline = [[
            {
              $match: {
                $expr: {
                  $in: [
                    Mongoose.Types.ObjectId(userid), '$likedBy.user'
                  ]
                }
              }
            }, {
              $lookup: {
                from: 'tweets', 
                localField: 'tweet', 
                foreignField: '_id', 
                as: 'tweet'
              }
            }, {
              $unwind: {
                path: '$tweet'
              }
            }, {
              $lookup: {
                from: 'users', 
                localField: 'tweet.user', 
                foreignField: '_id', 
                as: 'user'
              }
            }, {
              $unwind: {
                path: '$user'
              }
            }, {
              $addFields: {
                'tweet.user': '$user'
              }
            },
            {
                $addFields: {
                  'tweet.isLiked': true,
                }
              },{
                  $project:{
                      tweet:1,
                  }
              },
          ]
        ];
        const likedTweets = await TweetLike.aggregate(pipeline)

Я знаю, что могу сделать это с помощью javascript, но я хочу сделать это с помощью конвейера.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
39
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете заменить свой последний этап проекта следующим, чтобы достичь того, что вам нужно:

{$project:{key:"$tweet.key"}}
Ответ принят как подходящий

Отвечая на мой собственный вопрос

я хотел вернуть поддокумент, поэтому нашел этот https://stackoverflow.com/a/43411988/12332711

все, что мне нужно было сделать, это использовать

{
 $replaceRoot: {newRoot: "$tweet"}
 }

это сработало для меня

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