Как мне одновременно искать фразу и ключевое слово в 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'} }
]})

Вы можете добавить больше фраз к $ и массиву.

Другие вопросы по тегам