Как я могу выполнить поиск по полю и вернуть объект

#mongodb

#mongodb

Вопрос:

Я создал приложение для знакомств по подбору пива для школьного задания. К сожалению, у меня возникли небольшие проблемы с поиском в моей базе данных по шаблону, введенному по номеру в качестве объекта.

Я пробовал это, я прочитал в документах MongoDB

База данных выглядит следующим образом :

 beerProfile: Object24589: Objectname: "Heineken"
   img: "https://untappd.akamaized.net/site/beer_logos/beer94130_52756_sm.jpeg"
   description: "Heinken is a beer"
   bid:"24589"

  

Итак, beerProfile — это объект, внутри которого находится объект 24589. Внутри объекта 24589 находятся имя, imd, описание и ставка.

Я пытался использовать функцию find(). ( коллекция называется users)

 db.collection('users').find( { [24589]: [{name: [Heineken]}] }, { name: 1, bid: 1 }, done);
  

И я также пытался :

 db.collection('users').find( { $text: { $search: 24589 } }, done);
  

Я хотел бы заставить его возвращать объектные значения объекта 24589. Кто-нибудь знает, как я могу этого добиться?

Ответ №1:

Я думаю, что ваша «схема» стала излишне сложной из-за использования переменной (24589) в качестве ключа. Вы должны изменить его на что-то вроде этого:

 beerProfile: Objectbeer: Objectname: "Heineken"
   img: "https://untappd.akamaized.net/site/beer_logos/beer94130_52756_sm.jpeg"
   description: "Heinken is a beer"
   bid:"24589"
  

Затем вы можете использовать простой find ():

 db.collection('users').find( { "beer.bid": "24589"})
  

Комментарии:

1. Спасибо за ваш ответ. Это действительно хорошее решение, спасибо! Как бы вы добавили второе пиво в профиль пива? Поскольку дубликаты не разрешены. Или есть обходной путь?

2. @Root_ish, тогда вам нужно создать массив, который может содержать несколько объектов beer. beer: [ { name: "Heineken" bid: 24589 }, { name: "Bud" bid: 24590 } ] и т.д.