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