Docs Menu
Docs Home
/ /

オブジェクトの配列のクエリ、フィルタリング、取得

returnScope オプションを使用してクエリのコンテキストを設定し、オブジェクトの配列を個別のドキュメントとして返すことができます。

returnScope を使用してネストされたオブジェクトを個々のドキュメントとして取得するには、次の操作を行う必要があります。

  • オブジェクトの配列を embeddedDocuments 型としてインデックス化します。

  • 検索するネストされたフィールドに対して storedSource を定義します。 MongoDB Search は、 で定義されているフィールドのみを返します。storedSource

  • クエリで returnStoredSource オプションをtrue に設定します。

returnScope クエリでは、次の構文を使用します。

{
$search: {
"<operator>": {
<operator-specification>,
},
"returnScope": {
"path": "<embedded-documents-field-to-retrieve>"
},
"returnStoredSource": true
}
}
{
$searchMeta: {
"returnScope": {
"path": "<embedded-documents-field-to-retrieve>"
},
"returnStoredSource": true
},
"facet": {
"<operator>": {
<operator-specification>,
},
"facets": {
<facet-definition>
}
}
}

クエリ構文の詳細については、 $searchを参照してください。

returnScope オプションは、クエリの取得コンテキストを設定します。クエリで returnScope を指定すると、 MongoDB Search は各埋め込みドキュメントを個々のドキュメントとみなしてスコア付け、ソート、カウントします。

演算子仕様では、クエリするフィールドへの完全なパスを指定する必要があります。

returnScope オプションを使用すると、 MongoDB Search は embeddedDocument 内で storedSource として構成したフィールドのみを返します。 embeddedDocument パス外のフィールド(ルート レベルのフィールドなど)および storedSource として構成されていないフィールドは返されません。

次の例は、 クエリで returnScope オプションを使用する方法を示しています。例では、sample_training.companiesサンプルデータセットを使用します。クラスターに データをロードし、コレクションのフィールドにサンプルインデックスを作成したら、サンプルデータに対して次のクエリを試すことができます。

1{
2 "mappings": {
3 "dynamic": false,
4 "fields": {
5 "funding_rounds": {
6 "type": "embeddedDocuments",
7 "dynamic": true,
8 "fields": {
9 "investments": {
10 "type": "embeddedDocuments",
11 "dynamic": true
12 }
13 },
14 "storedSource": {
15 "include": [
16 "round_code",
17 "raised_currency_code",
18 "raised_amount",
19 "investments.person",
20 "investments.financial_org"
21 ]
22 },
23 }
24 }
25 }
26}

上記のインデックス定義により、 MongoDB Search は次のように構成されます。

  • funding_rounds フィールドと funding_rounds.investments フィールドを embeddedDocuments タイプとしてインデックス付けします。

  • オブジェクトの funding_roundsfunding_rounds.investments 配列にネストされているすべての動的にインデックス可能なフィールドをインデックス化します。

  • 次のフィールドを mongot に保存します。

    • funding_rounds.round_code

    • funding_rounds.raised_currency_code

    • funding_rounds.raised_amount

    • funding_rounds.investments.person

    • funding_rounds.investments.financial_org

embeddedDocument演算子を使用して、 funding_roundsフィールドとfunding_rounds.investments フィールドの両方に対して要素単位のクエリを実行できます。次のセクションでは、returnScope オプションを使用してembeddedDocuments フィールドを個別のドキュメントとして取得するいくつかのサンプルクエリを示します。

sample_streaming.companies コレクションのサンプル ドキュメント構造
{
...,
"funding_rounds": [
{
"id": <integer>,
"round_code": "<string>",
"source_url": "<string>",
"source_description": "<string>",
"raised_amount": <integer>,
"raised_currency_code": "<string>",
"funded_year": <integer>,
"funded_month": "<string>",
"funded_day": "<string>",
"investments": [
{
"company": "<string>",
"financial_org": {
"name": "<string>",
"permalink": "<string>"
},
"person": {
"first_name": "<string>",
"last_name": "<string>",
"permalink": "<string>"
}
},
...
]
},
...
],
...
}

次のセクションは、returnScope オプションを使用して、mongot に保存された embeddedDocuments 型フィールドのフィールドを検索するサンプルクエリを示します。

戻る

searchSequenceToken

項目一覧