MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ricerca del valore di qualsiasi campo in MongoDB senza nominarlo esplicitamente

per effettuare una ricerca testuale su tutti i campi, devi prima creare un indice testuale su tutti i campi.

come indica la documentazione di mongodb, "Per consentire la ricerca di testo su tutti i campi con contenuto di stringa, utilizzare l'identificatore di caratteri jolly ($**) per indicizzare tutti i campi che contengono contenuto di stringa".

se stai lavorando all'interno della mongo shell (che esegui dalla riga di comando chiamando 'mongo'), puoi farlo con questo comando, dove 'raccolta' è il nome della collezione nel db che vuoi usare.

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

il secondo oggetto, ovvero {name:"TextIndex"} , è facoltativo... in realtà non è necessario assegnare un nome all'indice, poiché può esserci un solo indice di testo per raccolta (alla volta... puoi eliminare gli indici e crearne di nuovi se lo desideri).

una volta creato un indice di testo su tutti i campi, puoi eseguire una semplice ricerca di testo con il seguente oggetto di query:{ $text : { $search: <your string> } }

quindi, se stai scrivendo una funzione javascript potresti fare qualcosa del tipo:

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

per maggiori informazioni sui vari modi per controllare la ricerca, vedere la documentazione di mongodb sulla ricerca di testo qui