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

明示的に名前を付けずにMongoDBの任意のフィールドの値を検索する

    すべてのフィールドでテキスト検索を実行するには、最初にすべてのフィールドでテキストインデックスを作成する必要があります。

    mongodbのドキュメントに示されているように、「文字列コンテンツを含むすべてのフィールドでテキスト検索を可能にするには、ワイルドカード指定子($ **)を使用して、文字列コンテンツを含むすべてのフィールドにインデックスを付けます。」

    mongoシェル(コマンドラインから「mongo」を呼び出して実行する)内で作業している場合は、このコマンドを使用して実行できます。ここで、「collection」は、使用するデータベース内のコレクションの名前です。

    db.collection.createIndex({ "$**": "text" },{ name: "TextIndex" })

    2番目のオブジェクト、つまり{name:"TextIndex"} 、はオプションです...コレクションごとに1つのテキストインデックスしか存在できないため、実際にインデックスに名前を付ける必要はありません(一度に...必要に応じてインデックスを削除して新しいインデックスを作成できます)。

    すべてのフィールドにテキストインデックスを作成したら、次のクエリオブジェクトを使用して簡単なテキスト検索を実行できます。{ $text : { $search: <your string> } }

    したがって、JavaScript関数を記述している場合は、次のようにすることができます。

    var cursor = db.collection(<collection_name>).find({ $text: { $search: <your string> } });

    検索を制御するさまざまな方法の詳細については、ここでテキスト検索に関するmongodbのドキュメントを参照してください



    1. Redisパブリッシュ/サブスクライブ:現在サブスクライブされているチャネルを確認します

    2. 異なるマシンでのRedisレプリケーションの使用(マルチマスター)

    3. MongoDBで「NotLike」演算子を使用するにはどうすればよいですか?

    4. マングースのオプションの検索クエリパラメータ?