Atlas Search クエリの作成と実行
Atlas Search クエリは集計パイプライン ステージの形式をとります。 Atlas Search には $search
ステージと$searchMeta
ステージがあり、いずれも$lookup
} サブパイプラインと$unionWith
サブパイプラインを含むすべてのクエリ パイプラインの最初のステージである必要があります。 これらのステージは、クエリ パイプライン内の他の集計パイプライン ステージと組み合わせて使用できます。 これらのパイプライン ステージの詳細については、 「 集計パイプライン ステージの選択 」を参照してください。
Atlas Search はクエリ演算子とコレクションも備えています。これらツールは$search
と$searchMeta
集計パイプライン ステージ内で使用できます。 Atlas Search 演算子を使用すると、Atlasクラスターのコレクションから関連データを検索して取得できます。 コレクターは、メタデータの検索結果を表すドキュメントを返します。
Atlas Search 演算子を使用して、ターム、フレーズ、地理的な形状と地点、数値、類似ドキュメント、同義語などをクエリできます。正規表現とワイルドカード式を使用して検索することもできます。Atlas Search 複合演算子を使用すると、$search
ステージで複数の演算子を組み合わせて複雑な検索を実行したり、Atlas Search によって返されるドキュメントに含めることが不可欠、禁止、推奨される項目に基づきデータをフィルタリングしたりできます。複合演算子は、$search
ステージ自体でドキュメントを一致させたりフィルタリングしたりする目的でも使用できます。$search
の後に $match
を実行する方法は、$search
を複合演算子を用いて実行する方法よりパフォーマンスが低くなります。
Atlas Search 演算子の構文、オプション、使用方法の詳細については、「Atlas Search クエリでの演算子とコレクターの使用」を参照してください。
mongod
同じノードで とmongot
クエリを実行する際、Atlas Search は構成済みの読み込み設定(read preference)を使用して、クエリを実行するノードを識別します。クエリはまず MongoDB プロセスに送られます。このプロセスは、レプリカセット クラスターの場合は
mongod
、シャーディングされたクラスターの場合はmongos
です。レプリカセット クラスターの場合、MongoDB プロセスは同じノード上の
mongot
にクエリをルーティングします。 シャーディングされたクラスターの場合、クラスター データはmongod
インスタンス全体で分割されます。各mongot
は、同じノード上にあるmongod
のデータのみを認識するため、 特定のシャードを対象とする Atlas Search クエリは実行できません。mongos
はクエリをすべてのシャードに送り、これらをscatter-gatherパターンのクエリにします。 ゾーンを使用してシャーディングされたコレクションをクラスター内のシャードのサブセットにわたって分散する場合、Atlas Search はクエリしているコレクションのシャードを含むゾーンにクエリをルーティングして、次のシャードのみで$search
クエリを実行します。コレクションが配置されている。Atlas Search は検索とスコアリングを実行し、一致する結果のドキュメント ID とその他の検索メタデータを
mongod
に返します。 次に、mongod
は一致する結果のクエリをドキュメント全体で暗黙的に実行し、その結果をクライアントに返します。 クエリで$search
同時実行オプションを使用すると、Atlas Search はクエリ内並列処理を有効にします。 詳細については、「セグメント間でのクエリ実行の並列化 」を参照してください。mongod
異なるノードの とmongot
クエリは実行されると、 構成済みの読みこみ設定(read preference ) に基づいてまず
mongod
に送信されます。mongod
プロセスは、同一ノード上のロード バランサーを通じて検索クエリを転送します。その結果、mongot
プロセス全体にリクエストが分散されます。Atlas Search
mongot
プロセスは検索とスコアリングを実行し、一致する結果のドキュメント ID とメタデータをmongod
に返します。 次に、mongod
はドキュメント全体で一致する結果の検索を実行し、その結果をクライアントに返します。 クエリで$search
同時実行オプションを使用すると、Atlas Search はクエリ内並列処理を有効にします。 詳細については、「セグメント間でのクエリ実行の並列化 」を参照してください。
Atlas Search は関連性ベースのスコアを結果セット内の各ドキュメントに関連付けます。関連性を基準にスコアリングすることで、スコアの高いものから低いものの順にドキュメントを返すことができます。スコアは、クエリ用語がドキュメントに頻繁に表示される場合は高く、クエリ用語がコレクション内の多数のドキュメントにわたり表示される場合は低くなります。Atlas Search では、boost、decay などのスコアの変更関数を使用することで、関連性ベースのデフォルト スコアをカスタマイズすることもできます。結果内のスコアをカスタマイズする方法の詳細については、「結果内のドキュメントのスコアリング」を参照してください。
Tip
その他の参照: ビデオで学ぶ
サポートされているクライアント
次の方法を使用して、Atlas Search クエリを作成および実行できます。
MongoDB Compass
Atlas CLI
次のステップ
クエリを作成および実行する方法については、「 クエリの作成」を参照してください。 Atlas Search インデックスの作成、およびサンプル データセットに対する Atlas Search クエリの実行に関する実践的な情報については、次のページのチュートリアルをお試しください。