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

MongoDB Abfrage kann nicht kanonisiert werden:BadValue Zu viele Textausdrücke

Der Fehler ist ziemlich genau. Sie versuchen, "mehrere Textabfragen" in einem $or Bedingung. MongoDB kann das nicht und es steht sogar in der ersten Zeile von Einschränkungen in der Handbuchseite für $text .

Außerdem werden Sie nicht vorausgesetzt um das zu tun, sondern geben Sie einen an Textindex Ihrer Sammlung, um bei Bedarf in mehreren Feldern zu suchen:

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

Und dann möchten Sie wahrscheinlich Gewichtungen wie hier gezeigt .

Aber es scheint, dass alles, was Sie wirklich fragen, darin besteht, nach "mehreren Begriffen" zu suchen. Sie verwenden also kein $or reichen Sie hierfür aber einfach die durch Leerzeichen getrennte Begriffsliste ein:

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

Alle Wörter in der durch Leerzeichen getrennten Liste werden dann im Kontext aller Felder im Textindex gesucht, und jedes Dokument, das "irgendein" dieser Wörter enthält, wird zurückgegeben. Mit den Ergebnissen sortiert nach "Gewicht" von mehr Übereinstimmungen der Wörter in dieser Liste.