このチュートリアルでは、非文字列フィールドを文字列に変換して マテリアライズドビューに保存することで、文字列専用のクエリを非文字列フィールドに対して実行する方法を紹介します。マテリアライズドビューを使用すると、文字列専用の演算子を用いて変換されたフィールドをクエリし、元のデータをソース コレクションにそのまま保持できます。
このチュートリアルでは、次の手順について説明します。
開始する前に、クラスターが 前提条件に記載されている要件を満たしていることを確認してください。
マテリアライズドビューの作成
このセクションでは、sample_ Airbnb.listingAnd Reviews で という名前のマテリアライズドビューを作成する方法を説明します。airbnb-mat-viewコレクション。このビューでは、ソースコレクションのさまざまな数値フィールドと日付フィールドを string フィールドとして保存します。
マテリアライズドビューでのMongoDB Search インデックスの作成
このチュートリアルの「変換されたフィールドでクエリを実行」ステージのクエリを実行するには、airbnb_mat_view マテリアライズドビューの変換された文字列フィールドにMongoDB Search インデックスを作成する必要があります。
次の JSON定義は、 マテリアライズドビューのMongoDB Searchairbnb_mat_view インデックスを定義します。動的マッピングまたは静的マッピングを使用して、実行するクエリのタイプに応じて、コレクション内でインデックスするフィールドを指定できます。フィールドマッピングまたはMongoDB Searchインデックス構文の詳細については、それぞれ「フィールドマッピングの定義」または「インデックスリファレンス」を参照してください。
次のJSON MongoDB Searchインデックス定義では、動的マッピングを使用してマテリアライズドビュー内のフィールドにインデックス。このインデックスを使用して、queryString 演算子を使用してクエリを実行できます。
動的にインデックスされたフィールドに対して オートコンプリート 演算子を使用してクエリを実行することはできません。
{ "mappings": { "dynamic": true } }
次のJSON MongoDB Searchインデックス定義では、静的マッピングを使用してマテリアライズドビュー内のフィールドをオートコンプリートタイプとしてインデックス。このインデックスを使用して、オートコンプリート演算子を使用してクエリを実行できます。
タイプ autocomplete としてインデックス付けされたフィールドに対して queryString 演算子を使用するクエリは実行できません。
{ "mappings": { "dynamic": false, "fields": { "accommodatesNumber": [ { "dynamic": true, "type": "document" }, { "minGrams": 1, "type": "autocomplete" } ], "lastScrapedDate": [ { "dynamic": true, "type": "document" }, { "type": "autocomplete" } ], "maximumNumberOfNights": [ { "dynamic": true, "type": "document" }, { "minGrams": 1, "type": "autocomplete" } ] } } }
希望するインターフェースを使用して、上記で定義されたインデックスを作成する方法については、サポートされているクライアントを参照してください。
変換されたフィールドでのクエリの実行
string に変換された数値フィールドと日付フィールドに対してクエリを実行できます。 このチュートリアルでは、 queryStringとオートコンプリート演算子を使用してプロパティを検索します。 クエリは、次のパイプライン ステージを使用します。
このセクションでは、クラスターに接続し、 airbnb_mat_viewコレクションのフィールドに対して 演算子を使用してサンプルクエリを実行します。