Docs Menu
Docs Home
/ /

배열 객체 쿼리, 필터링 및 조회

returnScope 옵션을 사용하여 쿼리 의 컨텍스트를 설정하다 하고 객체 배열을 개별 문서로 반환할 수 있습니다.

returnScope를 사용하여 중첩된 객체를 개별 문서로 조회하려면 다음을 수행해야 합니다.

  • 객체 배열을 embeddedDocuments 유형으로 인덱스합니다.

  • 조회할 중첩 필드에 대해 storedSource를 정의합니다. MongoDB 검색은 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 검색는 각 내장된 문서를 개별 문서처럼 점수화하고, 정렬하며, 개수를 셉니다.

연산자 사양에서 쿼리할 필드의 전체 경로를 명시해야 합니다.

returnScope 옵션을 사용할 때, MongoDB 검색은 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 검색하다를 다음과 같이 구성합니다.

  • funding_roundsfunding_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_roundsfunding_rounds.investments 필드에서 요소별 쿼리를 수행할 수 있습니다. 다음 섹션에서는 returnScope 옵션을 사용하여 embeddedDocuments 필드를 개별 문서로 조회하는 몇 가지 샘플 쿼리를 보여줍니다.

샘플 문서 구조 from sample_training.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

이 페이지의 내용