#mongodb
#mongodb
Вопрос:
Я создал приложение для знакомств по подбору пива для школьного задания. К сожалению, у меня возникли небольшие проблемы с поиском в моей базе данных по шаблону, введенному по номеру в качестве объекта.
Я пробовал это, я прочитал в документах MongoDB
База данных выглядит следующим образом :
beerProfile: Object
↳24589: Object
↳name: "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: Object
↳beer: Object
↳name: "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 } ]
и т.д.