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

Søger efter værdien af ​​ethvert felt i MongoDB uden eksplicit at navngive det

for at lave en tekstsøgning på alle felter, skal du først oprette et tekstindeks på alle felter.

som mongodb-dokumentationen angiver, "For at tillade tekstsøgning på alle felter med strengindhold, skal du bruge jokertegnsspecifikationen ($**) til at indeksere alle felter, der indeholder strengindhold."

hvis du arbejder inde i mongo-skallen (som du udfører fra kommandolinjen ved at kalde 'mongo'), så kan du gøre det med denne kommando, hvor 'collection' er navnet på samlingen i den db du vil bruge.

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

det andet objekt, dvs. {name:"TextIndex"} , er valgfri...du behøver faktisk ikke at give indekset et navn, da der kun kan være et enkelt tekstindeks pr. samling (ad gangen...du kan droppe indekser og oprette nye, hvis du vil).

når du har oprettet et tekstindeks på alle felter, kan du lave en simpel tekstsøgning med følgende forespørgselsobjekt:{ $text : { $search: <your string> } }

så hvis du skriver en javascript-funktion, kan du måske gøre noget som:

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

for mere info om de forskellige måder at styre søgningen på, se mongodb-dokumentationen om tekstsøgning her



  1. En oversigt over WiredTiger Storage Engine til MongoDB

  2. Effektiv personsøgning i MongoDB ved hjælp af mgo

  3. Kan redis deaktivere svarene for pipelinede kommandoer?

  4. MongoDB find()