Tato skutečná chyba naznačuje, že váš mongodb je verze nižší než 2.6 (takže žádné textové vyhledávání tímto způsobem). Ale stejně to nemůžete udělat ze dvou důvodů.
-
$or
výraz může mít pouze jeden speciální indexový výraz, který je buď "text" nebo "geoprostorový" v argumentech. -
Očekáváte textové vyhledávání ve „dvou“ různých polích a můžete mít pouze jedno textový index na kolekci. Tento jediný index však lze rozložit do několika polí v dokumentu. Ale nemůžete se ptát na různé hledané výrazy pro různá pole.
Dokumentace citát :
A také by tam mělo být uvedeno „Nemůžete použít $or
s $text
výraz nebo $near
operátor, kde se oba používají ve více než jedné podmínce." Ale tato malá informace chybí, ale stále to nemůžete udělat.
Vaše syntaxe obecně není správná, ale i se správnou syntaxí v podporované verzi MongoDB byste při pokusu o použití $or
dostali chybu takhle:
Error: error: {
"$err" : "Can't canonicalize query: BadValue Too many text expressions",
"code" : 17287
}
K vyřešení tohoto problému potřebujete:
-
Chcete-li mít server MongoDB verze 2.6 nebo vyšší, který podporuje
$text
syntaxe (nebo žít s příkazovými formuláři) -
Chcete-li žít s indexováním více polí a používáním jednoho indexu.
-
Chcete-li provést „samostatné dotazy“ místo vašich podmínek „nebo“ a „zkombinovat“ výsledky v rozhraní API klienta.
To je jediný způsob, jak získat podmínky „nebo“ jako je tato s textovým vyhledáváním MongoDB.