MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB Не може да канонизира заявка:BadValue Твърде много текстови изрази

Грешката е доста точна. Това, което се опитвате да направите, е да създадете „множество текстови заявки“ в <силен>$or състояние. MongoDB не може да направи това и всъщност е посочено в първия ред на Ограничения в страницата с ръководство за $text .

Освен това несе трябва за да направите това, а по-скоро посочете един текстов индекс във вашата колекция за търсене в множество полета, ако е необходимо:

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

И тогава вероятно искате да присвоите тегла както е показано тук .

Но изглежда всичко, което наистина искате, е да търсите „множество термини“. Така че не използвате $or за това, но просто изпратете списъка с термини, разделени с интервали:

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

Всички думи в списъка, разделен с интервал, след това се търсят в контекста на всички полета в текстовия индекс и всеки документ, който съдържа „някоя“ от тези думи, ще бъде върнат. С резултатите, подредени по "тегло" на повече съвпадения на думите в този списък.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Актуализиране на 2 схеми на mongoose в api повикване

  2. Мога ли да заявя MongoDB ObjectId по дата?

  3. Обект #<MongoClient> няма метод 'open'

  4. Как да комбинирам два израза $and в оператор $or в mongodb?

  5. MongoDB сортира документи по вложени данни