Используйте mon goose, чтобы найти ключ внутри массива объекта - PullRequest
0 голосов
/ 28 мая 2020

У меня есть таблица со списком предметов (как на картинке). Теперь я хочу найти объект, в котором name содержит searchString.
Я пробовал запрос типа db.getCollection('vehicles').find({'result': {'name': 'A-WING FIGHTER'}}), но он выглядит неправильно.
Как мне получить истинные данные в этом случае?

enter image description here

Ответы [ 3 ]

0 голосов
/ 28 мая 2020

по этому

db.getCollection('vehicles').find({ 'result': { 'name': 'A-WING FIGHTER' } })

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

вместо этого следует использовать точечную нотацию

db.getCollection('vehicles').find({ 'results.name': 'A-WING FIGHTER' })

надеюсь, это поможет

0 голосов
/ 28 мая 2020

Для поиска в массиве массива в MongoDB вы можете использовать оператор $ elemMatch.

Попробуйте этот запрос (этот запрос соответствует изображению, которое вы поделили)

db.getCollection('items').find({'results': {'$elemMatch: {'$elemMatch: {'name': 'A-WING FIGHTER'}}}})

Надеюсь на это будет полезно.

0 голосов
/ 28 мая 2020

Посмотрите, работает ли следующая команда -

db.getCollection('vehicles').find({'results': {'name': 'A-WING FIGHTER'}})

Вы назвали результат вместо результаты . Попробуйте, работает ли он сейчас ...

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

db.getCollection('vehicles').find({ results.name: 'A-WING FIGHTER' });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...