MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Suchen nach dem Wert eines beliebigen Felds in MongoDB, ohne es explizit zu benennen

Um eine Textsuche in allen Feldern durchzuführen, müssen Sie zunächst einen Textindex für alle Felder erstellen.

wie die mongodb-Dokumentation angibt:"Um die Textsuche in allen Feldern mit Zeichenfolgeninhalt zu ermöglichen, verwenden Sie den Platzhalterbezeichner ($**), um alle Felder zu indizieren, die Zeichenfolgeninhalte enthalten."

Wenn Sie in der Mongo-Shell arbeiten (die Sie von der Befehlszeile aus ausführen, indem Sie „mongo“ aufrufen), können Sie dies mit diesem Befehl tun, wobei „Sammlung“ der Name der Sammlung in der Datenbank ist, die Sie verwenden möchten.

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

das zweite Objekt, also {name:"TextIndex"} , ist optional ... Sie müssen dem Index eigentlich keinen Namen geben, da es nur einen einzigen Textindex pro Sammlung geben kann (zu einem Zeitpunkt ... Sie können Indizes löschen und neue erstellen, wenn Sie möchten).

Sobald Sie einen Textindex für alle Felder erstellt haben, können Sie eine einfache Textsuche mit dem folgenden Abfrageobjekt durchführen:{ $text : { $search: <your string> } }

Wenn Sie also eine Javascript-Funktion schreiben, könnten Sie Folgendes tun:

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

Weitere Informationen zu den verschiedenen Möglichkeiten zur Steuerung der Suche finden Sie in der Mongodb-Dokumentation zur Textsuche hier