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

Как да направите многократно текстово търсене с помощта на $text query и $or в mongodb / mongoose?

Тази действителна грешка предполага, че вашият mongodb е версия по-малка от 2.6 (така че няма търсене на текст по този начин). Но така или иначе не можете да направите това по две причини.

  1. $or изразът може да има само един специален индексен израз, който е или "текст", или "геопространствен" в аргументите.

  2. Очаквате текстови търсения в "две" различни полета и можете да имате само едно текстов индекс за колекция. Този единствен индекс обаче може да бъде разпръснат върху няколко полета в документа. Но не можете да задавате различни думи за търсене за различни полета.

Документация цитат :

И също така трябва да пише „Не можете да използвате $or с $text израз или $near оператор, където всеки се използва в повече от едно условие." Но тази малка част от информацията липсва, но все още не можете да го направите.

Вашият синтаксис обикновено не е правилен, но дори и с правилния синтаксис в поддържана версия на MongoDB ще получите грешка при опит да използвате $or като това:

Error: error: {
    "$err" : "Can't canonicalize query: BadValue Too many text expressions",
    "code" : 17287
}

Така че, за да разрешите това, трябва:

  1. Да имате MongoDB сървър версия 2.6 или по-нова, която поддържа $text синтаксис (или на живо с командни форми)

  2. Да живееш с индексиране на множество полета и използване на един индекс.

  3. За да изпълнявате „отделни заявки“ на мястото на вашите условия „или“ и „комбинирайте“ резултатите в API интерфейса на вашия клиент.

Това е единственият начин да получите "или" условия като това с текстово търсене в MongoDB.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Актуализирайте колекцията от метеори, без да премахвате или отменяте съществуващи полета

  2. MEANJS:413 (Обектът на заявката е твърде голям)

  3. Проверете дали съществува база данни mongodb?

  4. MongoDB Aggregation:Как да получите общия брой записи?

  5. mongodb създава 80+ файла по 2 GB всеки, докато базата данни е празна