Согласно этому сообщению Проверка, содержит ли поле строку и ответ от okoboko.
Я создал индекс для одного из моих полей в моей коллекции. Если я использую что-то вроде:
db.users.find( { $text: { $search: "son" } } )
Запрос быстрый, и это здорово, однако я хочу запросить мой индекс с помощью пунктуации (так как мое текстовое поле содержит URL-адреса). Если я хотел получить все документы, связанные со стековым потоком, я попытался использовать:
for page in myCollection.find( { "$text": { "$search": "\"stackoverflow\.com\"" } } ):
print (page['_id'])
Но это не работает. Какой самый быстрый способ поиска в коллекции полей, которые содержат строку с пунктуацией?
Я не получаю сообщение об ошибке, но мой код застревает и ничего не возвращает, так как я изучаю диспетчер задач и вижу, что python загружает мою память и сервер MongoDB тоже усердно работает.
Когда я использую этот бит кода, результат получается очень быстрым, но я также хочу включить .com
.
for page in myCollection.find( { "$text": { "$search": "\".stackoverflow\"" } } ):
print (page['_id'])
Когда я использую этот бит кода, я получаю возврат, но его время примерно такое же, как при использовании $regex
:
for page in ScrapedPagesCollection.find( { "$text": { "$search": "\"stackoverflow.com\"" } } ):
print (page['_id'])