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 옵션을 사용하는 경우 모든 연산자 사양 경로가 returnScope.path 아래에 중첩되어 있는지 확인해야 합니다. returnScope.path 외부의 필드 쿼리 하려면 hasAncestor 또는 hasRoot 연산자 사용해야 합니다. 자세한 학습 은 다음을 참조하세요.

다음 예제는 쿼리에서 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

이 페이지의 내용