Задать вопрос
@olezhenka

Как получить определенный объект в массиве?

У меня есть база Groups.

У Groups есть settings.
const Groups = new Schema({
  group_id: Number,
  settings: [
    {
      name: String
    }
  ]
})


Допустим, есть такой документ:
{
  group_id: 12312,
  settings: [
    {
      name: 'world1'
    },
    {
      name: 'world2'
    },
    {
      name: 'world3'
    }
  ]
}


Я хочу получить группу но с только одним нужным мне объектом настроек, вот так:
{
  group_id: 12312,
  settings: {
    name: 'world2'
  }
}
  • Вопрос задан
  • 77 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Node.js для backend-разработки
    6 месяцев
    Далее
  • Skillbox
    Node.js
    2 месяца
    Далее
  • Яндекс Практикум
    Бэкенд на Node.js для фронтенд-разработчиков
    3 месяца
    Далее
Решения вопроса 1
3vi1_0n3
@3vi1_0n3
Не совсем понятно, что там еще находится, но, возможно, подойдет unwind из aggregate framework.
Как-то так:
> db.groups.find();
{ "_id" : ObjectId("5af95ce4b538395ae8af74fd"), "group_id" : 12312, "settings" : [ { "name" : "world1" }, { "name" : "world2" }, { "name" : "world3" } ] }
> db.groups.aggregate({$unwind: "$settings"}, {$match: {"settings": {"name":"world2"}}});
{ "_id" : ObjectId("5af95ce4b538395ae8af74fd"), "group_id" : 12312, "settings" : { "name" : "world2" } }

Mongoose это должен уметь
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы