MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wyszukiwanie wartości dowolnego pola w MongoDB bez jawnego nazywania go

aby przeprowadzić wyszukiwanie tekstowe we wszystkich polach, musisz najpierw utworzyć indeks tekstowy we wszystkich polach.

jak wskazuje dokumentacja mongodb:„Aby zezwolić na wyszukiwanie tekstowe we wszystkich polach zawierających ciąg znaków, użyj specyfikatora symboli wieloznacznych ($**), aby zindeksować wszystkie pola zawierające ciąg znaków”.

jeśli pracujesz wewnątrz powłoki mongo (którą wykonujesz z wiersza poleceń, wywołując „mongo”), możesz to zrobić za pomocą tego polecenia, gdzie „collection” jest nazwą kolekcji w bazie danych, której chcesz użyć.

db.collection.createIndex({ "$**": "text" },{ name: "TextIndex" })

drugi obiekt, tj. {name:"TextIndex"} , jest opcjonalne... w rzeczywistości nie musisz nadawać indeksowi nazwy, ponieważ może istnieć tylko jeden indeks tekstowy na kolekcję (w danym momencie... możesz usunąć indeksy i utworzyć nowe, jeśli chcesz).

po utworzeniu indeksu tekstowego we wszystkich polach możesz przeprowadzić proste wyszukiwanie tekstowe za pomocą następującego obiektu zapytania:{ $text : { $search: <your string> } }

więc jeśli piszesz funkcję javascript, możesz zrobić coś takiego:

var cursor = db.collection(<collection_name>).find({ $text: { $search: <your string> } });

aby uzyskać więcej informacji na temat różnych sposobów kontrolowania wyszukiwania, zapoznaj się z dokumentacją mongodb na temat wyszukiwania tekstu tutaj



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Otrzymuj powiadomienia o zmienionych dokumentach w mongodb

  2. Jak włączyć logowanie dla Mongoose i sterownika MongoDB Node.JS?

  3. MongoDB $sinh

  4. Wstawianie/aktualizacja wsadowa przy użyciu Mongoid?

  5. Tablice zagnieżdżone w Mongoose