Как мне одновременно искать фразу и ключевое слово в mongodb?
По сути, я просматриваю большую базу данных yelp в моем mongodb, и я хочу найти все отзывы с фразой hot wings и ключевой скидкой. Но я не могу создать правильный запрос, который будет искать обзор, в котором есть фраза "горячие крылья" И ключевое слово "скидка" в обзоре.
Чтобы дать вам некоторую предысторию, я импортировал несколько больших json-файлов обзора yelp в мою базу данных mongodb на Ubuntu. Я хочу найти ключевые слова "UFC" в разделе "текст" и "Alcohol: full_bar" в атрибутах и вернуть их количество, как минимум. Потому что я хочу видеть, получают ли бары, которые упоминали UFC и MMA, больше отзывов и проверок и советов, чем другие бары, которые не упоминают эти вещи.
Я успешно построил этот индекс в моей базе данных mongodb:
> db.collection.createIndex({"text":"text", "attributes": "text"})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
Вот что у меня есть:
db.collection.find( { $text: { $search: "\"hot wings\" 'discount'" } } )
Пока это только дало мне отзывы с горячими крыльями там, и скидкой там. Есть ли способ показать только отзывы, содержащие фразу hot wing И ключевое слово скидка?
И есть ли способ поиска по нескольким фразам и ключевым словам одновременно?
1 ответ
Это должно работать:
db.collection.find({
$and: [
{'text': {'$regex': 'hot wings'} },
{'text': {'$regex': 'discount'} }
]})
Вы можете добавить больше фраз к $ и массиву.