Mongoose: найти объект, если имеется больше свойств, чем запрос - PullRequest
0 голосов
/ 09 октября 2018

Я хотел бы найти объект на основе существующих под-свойств, игнорируя те, которых нет в информации запроса.

Объект для поиска:

{
     _id: '123'
     attributes: {
          type: ['city'],
          name: ['Paris'],
          numberOfInhabitants: [1000000]
     }
}

Информация о запросе:

{
     attributes: {
          type: ['city'],
          name: ['Paris']
     }
}

В настоящее время мой запрос соответствует, только если у меня нет numberOfInhabitants для объекта, который нужно найти.(Узел является схемой мангуста)

Node.find({
     attributes: {
         type: ['city'],
         name: ['Paris']
     }
})

Как мне построить свой запрос?

Заранее большое спасибо.

1 Ответ

0 голосов
/ 09 октября 2018

Поскольку атрибуты - это встроенный объект в основном документе, то мы можем напрямую запросить поле типа следующим образом.Ниже запрос вернет все атрибуты с типом город

db.getCollection('test').find({'attributes.type' : 'city'})

Так что в вашем случае запрос будет:

db.getCollection('test').find({'attributes.type' : 'city', 'attributes.name' : 'Paris'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...