@ikerya

Как построить aggregate запрос для mongoose?

Всем привет! У меня есть коллекция posts:

{
  definition: { type: mongoose.Types.ObjectId, ref: 'Definition' }
}


Также есть коллекция definitions:

{
  title: String,
  likes: Number
}


Вопрос: как вытащить из коллекции posts те документы, definition.likes которых > 10, к примеру? Используя aggregate
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
hzzzzl
@hzzzzl
монгусовский populate не выйдет совместить с аггрегацией в одном запросе,
попробуй как-то так

Post.aggregate([
  { 
    $lookup: {
      from: 'definitions',
      localField: 'definition',
      foreignField: '_id',
      as: 'definitions'
    } 
  },
  {
    $match: {
      'definitions.likes': { $gte: 10 }
    }
  }
])


(если не выйдет, то предлагаю потыкать аггрегацию в mongodb compass, там очень наглядно будет расписываться каждый шаг)

а вообще, нет причин хранить лайки и заголовок поста отдельно от поста
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы