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

MongoDB Kan ikke kanonisere forespørgsel:BadValue For mange tekstudtryk

Fejlen er ret præcis. Det, du forsøger at gøre, er at oprette "flere tekstforespørgsler" inde i en strong>$or tilstand. MongoDB kan ikke gøre det, og det står faktisk i første linje af Begrænsninger i manualsiden for $text .

Desuden er du ikke formodet for at gøre det, men angiv snarere én tekstindeks på din samling for at søge på flere felter, hvis det kræves:

db.collection.ensureIndex({ "comments": "text", "title": "text" })

Og så vil du sikkert tildele vægte som vist her .

Men det lader til, at det eneste, du egentlig beder om, er at søge efter "flere termer". Så du bruger ikke en $or for dette, men indsend blot listen over termer adskilt af mellemrum:

db.collection.find({ "$text": { "$search": "something else" } })

Alle ord i den mellemrumsseparerede liste søges derefter efter inden for konteksten af ​​de felter, der er i tekstindekset, og ethvert dokument, der indeholder "enhver" af disse ord, vil blive returneret. Med resultaterne sorteret efter "vægt" af flere matcher af ordene på listen.




  1. Giver MongoDB en måde at generere sekventielle værdier på?

  2. Ønsker at bruge journaliseringsaktiveret DB i 32 bit system-MongoDB

  3. MongoDB .Net driver 2.0 Pull (fjern element)

  4. Mongo-forespørgsel for at sortere efter særskilt antal