sql >> Database >  >> NoSQL >> MongoDB

MongoDB kan query niet canonicaliseren:BadValue Te veel tekstuitdrukkingen

De fout is vrij exact. Wat u probeert te doen, is "meerdere tekstquery's" maken in een $or voorwaarde. MongoDB kan dat niet en het staat zelfs in de eerste regel van Beperkingen in de handleiding voor $text .

Bovendien ben je niet verondersteld om dat te doen, maar specificeer liever één tekstindex op uw collectie om indien nodig in meerdere velden te zoeken:

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

En dan wil je waarschijnlijk gewichten toekennen zoals hier getoond .

Maar het lijkt erop dat u alleen maar naar "meerdere termen" hoeft te zoeken. U gebruikt dus geen $or hiervoor, maar dien gewoon de lijst met termen in, gescheiden door spaties:

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

Alle woorden in de door spaties gescheiden lijst worden vervolgens gezocht binnen de context van de velden in de tekstindex, en elk document dat "een" van die woorden bevat, zal worden geretourneerd. Met de resultaten gesorteerd op "gewicht" van meer overeenkomsten van de woorden in die lijst.




  1. MongoDb:Hoe voeg ik een extra object in de objectverzameling in?

  2. MongoDB - Toevoegen aan een set en verhogen

  3. Ongedaan maken Ontspan in totaal in mongodb

  4. Hoe kan ik Mongoid en ActiveRecord parallel gebruiken in Rails 3?