その実際のエラーは、mongodbが2.6未満のバージョンであることを示しています(したがって、そのようなテキスト検索はありません)。しかし、2つの理由でとにかくそれを行うことはできません。
-
$or
式には1つしか含めることができません 引数に「テキスト」または「地理空間」のいずれかである特別なインデックス式。 -
「2つの」異なるフィールドでのテキスト検索を期待しており、1つしか使用できません コレクションごとのテキストインデックス。ただし、その単一のインデックスは、ドキュメント内の複数のフィールドに分散できます。ただし、フィールドごとに異なる検索用語を尋ねることはできません。
ドキュメント
また、「$or
は使用できません」と表示されます。 $text
を使用 式または$near
いずれかが複数の条件で使用される演算子。" しかし、その小さな情報は欠落していますが、それでもそれを行うことはできません。
構文は一般的に正しくありませんが、サポートされているバージョンのMongoDBで正しい構文を使用しても、$or
を使用しようとするとエラーが発生します。 このように:
Error: error: {
"$err" : "Can't canonicalize query: BadValue Too many text expressions",
"code" : 17287
}
したがって、これを解決するには、次のものが必要です。
-
$text
をサポートする2.6以降のMongoDBサーバーバージョンを使用する 構文(またはコマンドフォームを使用) -
複数のフィールドにインデックスを付け、単一のインデックスを使用すること。
-
「または」条件の代わりに「個別のクエリ」を実行し、クライアントAPIインターフェースで結果を「結合」するには。
これが、MongoDBテキスト検索でこのような「または」条件を取得する唯一の方法です。