このチュートリアルでは、フィールドを文字列に変換し、マテリアライズドビューに保存することで、非文字列フィールドに対して文字列特有のクエリを実行する方法を示します。マテリアライズドビューを使用すると、変換されたフィールドを文字列固有の演算子を使ってクエリし、元のデータをソース コレクションにそのまま保持できます。
このチュートリアルでは、次の手順について説明します。
開始する前に、クラスターが前提条件に記載されている要件を満たしていることを確認してください。
マテリアライズドビューの作成
このセクションでは、 airbnb-mat-viewsample_airbnb.listingsAndReviews に、 という名前の マテリアライズドビュー を作成する方法を説明します。コレクション.このビューでは、ソースコレクションの様々な数値フィールドと日付フィールドを string フィールドとして保存します。
マテリアライズドビューでのMongoDB Search インデックスの作成
このチュートリアルの「変換されたフィールドでクエリを実行」ステージのクエリを実行するには、airbnb_mat_view マテリアライズドビューの変換された文字列フィールドにMongoDB Search インデックスを作成する必要があります。
次の JSON 定義は、airbnb_mat_view マテリアライズドビューの MongoDB Search インデックスを定義します。実行するクエリの種類に応じて、ダイナミックまたはスタティックマッピングを使用して、コレクションでインデックスするフィールドを指定できます。フィールド マッピングまたは 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コレクションのフィールドに対して 演算子を使用してサンプルクエリを実行します。