sql >> データベース >  >> NoSQL >> MongoDB

$textqueryと$orをmongodb/mongooseで使用して複数のテキスト検索を行う方法は?

    その実際のエラーは、mongodbが2.6未満のバージョンであることを示しています(したがって、そのようなテキスト検索はありません)。しかし、2つの理由でとにかくそれを行うことはできません。

    1. $or 式には1つしか含めることができません 引数に「テキスト」または「地理空間」のいずれかである特別なインデックス式。

    2. 「2つの」異なるフィールドでのテキスト検索を期待しており、1つしか使用できません コレクションごとのテキストインデックス。ただし、その単一のインデックスは、ドキュメント内の複数のフィールドに分散できます。ただし、フィールドごとに異なる検索用語を尋ねることはできません。

    ドキュメント引用 :

    また、$orは使用できません」と表示されます。 $textを使用 式または$near いずれかが複数の条件で使用される演算子。" しかし、その小さな情報は欠落していますが、それでもそれを行うことはできません。

    構文は一般的に正しくありませんが、サポートされているバージョンのMongoDBで正しい構文を使用しても、$orを使用しようとするとエラーが発生します。 このように:

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

    したがって、これを解決するには、次のものが必要です。

    1. $textをサポートする2.6以降のMongoDBサーバーバージョンを使用する 構文(またはコマンドフォームを使用)

    2. 複数のフィールドにインデックスを付け、単一のインデックスを使用すること。

    3. 「または」条件の代わりに「個別のクエリ」を実行し、クライアントAPIインターフェースで結果を「結合」するには。

    これが、MongoDBテキスト検索でこのような「または」条件を取得する唯一の方法です。



    1. mongodbドット表記の変数

    2. マングース独自の検証が機能していません。重複するエントリが保存されます

    3. コマンドを使用してmongodbデータとログファイルの場所を見つける方法は?

    4. MongoShellの場合:コレクションに接続できません。db.collection_nameはNaNを返します。