@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'
  }
}
  • Вопрос задан
  • 76 просмотров
Решения вопроса 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 это должен уметь
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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