Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

非アルファベットデータを文字列として検索する方法

このチュートリアルでは、フィールドを文字列に変換し、マテリアライズドビューに保存することで、非文字列フィールドに対して文字列特有のクエリを実行する方法を示します。マテリアライズドビューを使用すると、変換されたフィールドを文字列固有の演算子を使ってクエリし、元のデータをソース コレクションにそのまま保持できます。

このチュートリアルでは、次の手順について説明します。

開始する前に、クラスターが前提条件に記載されている要件を満たしていることを確認してください。

このセクションでは、sample_ Airbnb.listingAnd Reviews で という名前のマテリアライズドビューを作成する方法を説明します。airbnb-mat-viewコレクション。このビューでは、ソースコレクションのさまざまな数値フィールドと日付フィールドを string フィールドとして保存します。

このチュートリアルの「 変換されたフィールドでクエリを実行 」ステージのクエリを実行するには、 マテリアライズドビューの変換された文字列フィールドにMongoDB Searchairbnb_mat_view インデックスを作成する必要があります。

次の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オートコンプリート演算子を使用してプロパティを検索します。 クエリは、次のパイプライン ステージを使用します。

  • $search コレクションを検索するステージ

  • 出力を5の結果に制限する$limitステージ

  • $project 除外するステージ _id

このセクションでは、クラスターに接続し、 airbnb_mat_viewコレクションのフィールドに対して 演算子を使用してサンプルクエリを実行します。

注意

マテリアライズドビューで文字列に変換された日付および数値フィールドに対して、近くのクエリまたは範囲のクエリを実行することはできません。