sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Kan inte kanonisera fråga:BadValue För många textuttryck

Felet är ganska exakt. Det du försöker göra är att skapa "flera textfrågor" i en strong>$or skick. MongoDB kan inte göra det och det står faktiskt i den första raden av Begränsningar i manualsidan för $text .

Dessutom är du inte förmodad för att göra det, utan ange hellre en textindex på din samling för att söka i flera fält om det behövs:

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

Och då vill du förmodligen tilldela vikter som visas här .

Men det verkar som att allt du egentligen frågar är att söka efter "flera termer". Så du använder inte en $or för detta, men skicka bara in listan med termer separerade med mellanslag:

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

Alla ord i den blankstegsavgränsade listan söks sedan efter inom ramen för de fält som finns i textindexet, och alla dokument som innehåller "något" av dessa ord kommer att returneras. Med resultaten sorterade efter "vikt" av fler matchningar av orden i den listan.




  1. Hur säger man till Mongo att sortera en samling innan man begränsar resultaten?

  2. I MongoDB använder jag en stor fråga, hur jag skapar sammansatt index eller enstaka index, så min svarstid ökar

  3. Mongoose expires egendom fungerar inte korrekt

  4. Mongodb findAndModify node js