Тази действителна грешка предполага, че вашият mongodb е версия по-малка от 2.6 (така че няма търсене на текст по този начин). Но така или иначе не можете да направите това по две причини.
-
$or
изразът може да има само един специален индексен израз, който е или "текст", или "геопространствен" в аргументите. -
Очаквате текстови търсения в "две" различни полета и можете да имате само едно текстов индекс за колекция. Този единствен индекс обаче може да бъде разпръснат върху няколко полета в документа. Но не можете да задавате различни думи за търсене за различни полета.
Документация цитат :
И също така трябва да пише „Не можете да използвате $or
с $text
израз или $near
оператор, където всеки се използва в повече от едно условие." Но тази малка част от информацията липсва, но все още не можете да го направите.
Вашият синтаксис обикновено не е правилен, но дори и с правилния синтаксис в поддържана версия на MongoDB ще получите грешка при опит да използвате $or
като това:
Error: error: {
"$err" : "Can't canonicalize query: BadValue Too many text expressions",
"code" : 17287
}
Така че, за да разрешите това, трябва:
-
Да имате MongoDB сървър версия 2.6 или по-нова, която поддържа
$text
синтаксис (или на живо с командни форми) -
Да живееш с индексиране на множество полета и използване на един индекс.
-
За да изпълнявате „отделни заявки“ на мястото на вашите условия „или“ и „комбинирайте“ резултатите в API интерфейса на вашия клиент.
Това е единственият начин да получите "или" условия като това с текстово търсене в MongoDB.