2013-06-28 17 views
10

Na przykład, jeśli moje słowo kluczowe jest "wszystkie", chciałbym, aby MongoDb zwrócił wszystkie dokumenty z danego pola zawierające słowa "wszystkie", takie jak "edgar allan poe" lub "sala Whitneya". Jak mam to zrobić w MongoDb? Utknąłem tu od wielu dni, więc każda pomoc będzie bardzo doceniona :)Jak wyszukiwać w Mongodb przy użyciu znaków wieloznacznych?

Odpowiedz

17

Używając wyrażenia regularnego. MongoDb ma operatora $regex.

db.authors.find({name: {$regex: 'all', $options: 'i'}}); 

Operacje Regex nie mogą korzystać z indeksów, więc operacje find() nie będą wydajne. Indeks może być używany tylko dla prefiksów (zaczyna się od) i dopasowań wielkości liter, takich jak to zapytanie:

db.authors.find({name: {$regex: '^a'}); 
+3

Warto zauważyć, że nie będzie to wykorzystywać indeksów, więc nie będzie w ogóle bardzo dobrze skalować. –

+1

Użyje indeksów do wyrażeń regularnych tylko w przypadku wyszukiwania początku łańcucha: '^ test' – moka

+1

Brakuje'} 'na końcu. Powinno się przeczytać 'db.authors.find ({nazwa: {$ regex: 'wszystkie', $ opcje: 'i'}});'. –

Powiązane problemy