Docs Menu
Docs Home
/ /

hasRoot 연산자

hasRoot

hasRoot 연산자 returnScopereturnStoredSource 옵션을 지정할 때 루트 수준 필드를 쿼리 데 사용할 수 있습니다.

hasRoot 의 구문은 다음과 같습니다:

1{
2 $search: {
3 "index": "<index name>", // optional, defaults to "default"
4 "hasRoot": {
5 "operator": {
6 <operator-specification>
7 }
8 },
9 "returnScope": {
10 "path": "<embedded-documents-field-to-retrieve>"
11 },
12 "returnStoredSource": true,
13 }
14}
필드
유형
설명
필요성

operator

객체

인덱싱된 필드 쿼리 데 사용하는 연산자입니다. 하위 문서를 필터하다 위한 검색 기준을 지정합니다.

필수 사항

이 연산자 사용하려면 인덱스 정의에서 다음을 수행해야 합니다.

  • 쿼리 하려는 루트 수준 필드 인덱싱합니다.

  • embeddedDocuments 유형으로 조회 하려는 객체 배열 인덱싱합니다. 조회 하려는 중첩 필드에 대해 storedSource 도 구성해야 합니다.

쿼리 에서 다음을 수행해야 합니다.

  • 연산자 를 검색 할 필드 범위를 설정하다 하려면 returnScope 를 지정합니다.

  • returnStoredSourcetrue 로 설정하여 storedSource 필드를 반환합니다.

이 섹션의 예제에서는 sample_training.companies 네임스페이스 사용합니다. 샘플 데이터 세트를 로드하고 컬렉션 에 인덱스 생성하는 경우 이 섹션에 설명된 샘플 쿼리를 시도할 수 있습니다.

이 섹션의 쿼리는 다음 인덱스 사용합니다. 이 인덱스 정의는 다음을 수행하도록 MongoDB Search를 구성합니다.

  • 컬렉션에서 동적으로 인덱싱할 수 있는 모든 필드를 자동으로 인덱싱합니다.

  • productsfunding_rounds, 및 funding_rounds.investments 필드를 embeddedDocuments 유형으로 인덱싱합니다.

  • 다음 필드를 mongot에 저장합니다.

    • funding_rounds.raised_currency_code

    • funding_rounds.raised_amount

    • funding_rounds.investments

    • products.name

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "funding_rounds": {
6 "dynamic": true,
7 "fields": {
8 "investments": [
9 {
10 "dynamic": true,
11 "type": "embeddedDocuments"
12 }
13 ]
14 },
15 "storedSource": {
16 "include": [
17 "raised_currency_code",
18 "raised_amount",
19 "investments"
20 ]
21 },
22 "type": "embeddedDocuments"
23 },
24 "products": {
25 "dynamic": true,
26 "storedSource": {
27 "include": [
28 "name"
29 ]
30 },
31 "type": "embeddedDocuments"
32 }
33 }
34 }
35}

다음 쿼리 루트 수준 필드 founded_year2005 년과 2010년 사이에 있는 products 을 반환합니다.

1db.companies.aggregate([
2 {
3 "$search": {
4 "returnStoredSource": true,
5 "returnScope": { "path": "products" },
6 "hasRoot": {
7 "operator": {
8 "range": {
9 "path": "founded_year",
10 "gte": 2005,
11 "lte": 2010
12 }
13 }
14 }
15 }
16 }
17])
[
{ name: 'Wikison Wetpaint' },
{ name: 'Wetpaint Social Distribution System' },
{ name: 'Omnidrive' },
{ name: 'Twitter Blocks' },
{ name: 'Twicco' },
{ name: 'Slacker Web Player' },
{ name: 'Slacker Desktop Radio' },
{ name: 'Slacker Portable Player' },
{ name: 'Babelgum' },
{ name: 'Powerset' },
{ name: 'OpenX Enterprise' },
{ name: 'OpenX Market' },
{ name: 'OpenX Lift' },
{ name: 'Sparter' },
{ name: 'Thoof' },
{ name: 'MyFree411' },
{ name: 'Wesabe' },
{ name: 'Prosper' },
{ name: 'Stickam' },
{ name: 'PayPerLive.com' }
]

다음 쿼리 text 연산자 사용하여 이름이 Facebook 인 회사 의 name 필드 검색하여 다음에 있는 모든 투자자(investments.personinvestments.financial_org)가 투자한 금액(funding_rounds.raised_amountfunding_rounds.raised_currency_code)을 조회 합니다. 회사.

1db.companies.aggregate([
2 {
3 "$search": {
4 "returnStoredSource": true,
5 "returnScope": { "path": "funding_rounds" },
6 "hasRoot": {
7 "operator": {
8 "text": {
9 "path": "name",
10 "query": "Facebook"
11 }
12 }
13 }
14 }
15 }
16])
[
{
raised_amount: 500000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: null,
person: {
first_name: 'Peter',
last_name: 'Thiel',
permalink: 'peter-thiel'
}
},
{
company: null,
financial_org: null,
person: {
first_name: 'Reid',
last_name: 'Hoffman',
permalink: 'reid-hoffman'
}
}
]
},
{
raised_amount: 12700000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: { name: 'Accel Partners', permalink: 'accel-partners' },
person: null
},
{
company: null,
financial_org: null,
person: {
first_name: 'Mark',
last_name: 'Pincus',
permalink: 'mark-pincus'
}
},
{
company: null,
financial_org: null,
person: {
first_name: 'Reid',
last_name: 'Hoffman',
permalink: 'reid-hoffman'
}
}
]
},
{
raised_amount: 27500000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: { name: 'Greylock Partners', permalink: 'greylock' },
person: null
},
{
company: null,
financial_org: {
name: 'Meritech Capital Partners',
permalink: 'meritech-capital-partners'
},
person: null
},
{
company: null,
financial_org: { name: 'Founders Fund', permalink: 'founders-fund' },
person: null
},
{
company: null,
financial_org: { name: 'SV Angel', permalink: 'sv-angel' },
person: null
}
]
},
{
raised_amount: 240000000,
raised_currency_code: 'USD',
investments: [
{
company: { name: 'Microsoft', permalink: 'microsoft' },
financial_org: null,
person: null
}
]
},
{
raised_amount: 60000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: null,
person: {
first_name: 'Li',
last_name: 'Ka-shing',
permalink: 'li-ka-shing'
}
},
{
company: null,
financial_org: { name: 'Horizons Ventures', permalink: 'horizons-ventures' },
person: null
}
]
},
{
raised_amount: 15000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: {
name: 'European Founders Fund',
permalink: 'european-founders-fund'
},
person: null
}
]
},
{
raised_amount: 100000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: {
name: 'TriplePoint Capital',
permalink: 'triplepoint-capital'
},
person: null
}
]
},
{
raised_amount: 60000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: null,
person: {
first_name: 'Li',
last_name: 'Ka-shing',
permalink: 'li-ka-shing'
}
},
{
company: null,
financial_org: { name: 'Horizons Ventures', permalink: 'horizons-ventures' },
person: null
}
]
},
{
raised_amount: 200000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: {
name: 'Digital Sky Technologies',
permalink: 'digital-sky-technologies-fo'
},
person: null
}
]
},
{
raised_amount: 210000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: { name: 'Elevation Partners', permalink: 'elevation-partners' },
person: null
}
]
},
{
raised_amount: 1500000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: { name: 'Goldman Sachs', permalink: 'goldman-sachs' },
person: null
},
{
company: null,
financial_org: {
name: 'Digital Sky Technologies',
permalink: 'digital-sky-technologies-fo'
},
person: null
}
]
}
]

다음 쿼리 funding_rounds.investments 텀 사용하여 Ventures 설명된 name 회사에 투자한 텀 사용하는 금융 조직( 필드 내 모든 network 곳)( 필드 내 모든 description 곳)에 대해 중첩된 필드 검색합니다. ). 이 쿼리 복합 연산자 사용하여 다음을 검색 .

  • embeddedDocument 연산자 사용하는 중첩된 funding_rounds.investments.financial_org.name 필드

  • hasRoot 연산자 사용하는 루트 수준 description 필드

returnScope 은 연산자에 대한 컨텍스트를 funding_rounds embeddedDocuments 유형 필드 로 설정하고 returnStoredSource 필드 true 로 설정하다 storedSource 필드만 반환합니다. 이 쿼리 결과를 5 개의 문서로 제한합니다.

1db.companies.aggregate([
2 {
3 "$search": {
4 "compound": {
5 "should": [
6 {
7 "embeddedDocument": {
8 "path": "funding_rounds.investments",
9 "operator": {
10 "wildcard": {
11 "path": "funding_rounds.investments.financial_org.name",
12 "query": "*Ventures*",
13 "allowAnalyzedField": true
14 }
15 }
16 }
17 },
18 {
19 "hasRoot": {
20 "operator": {
21 "wildcard": {
22 "path": "description",
23 "query": "*network*",
24 "allowAnalyzedField": true
25 }
26 }
27 }
28 }
29 ]
30 },
31 "returnScope": {"path": "funding_rounds"},
32 "returnStoredSource": true
33 }
34 },
35 {
36 "$limit": 5
37 }
38])
[
{
raised_amount: 6500000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: {
name: 'Velocity Interactive Group',
permalink: 'velocity-interactive-group'
},
person: null
},
{
company: null,
financial_org: { name: 'TELUS Ventures', permalink: 'telus-ventures' },
person: null
},
{
company: null,
financial_org: {
name: 'Charles River Ventures',
permalink: 'charles-river-ventures'
},
person: null
},
{
company: null,
financial_org: {
name: 'Partech Ventures',
permalink: 'partech-international'
},
person: null
},
{
company: null,
financial_org: { name: 'Fidelity Ventures', permalink: 'fidelity-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Star Ventures', permalink: 'star-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Castile Ventures', permalink: 'castile-ventures' },
person: null
}
]
},
{
raised_amount: 25000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: { name: 'Boulder Ventures', permalink: 'boulder-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Sequel Venture Partners', permalink: 'sequel' },
person: null
},
{
company: null,
financial_org: { name: 'Sprout Group', permalink: 'the-sprout-group' },
person: null
},
{
company: null,
financial_org: { name: 'EPIC Ventures', permalink: 'epic-ventures' },
person: null
},
{
company: null,
financial_org: {
name: 'Garage Technology Ventures',
permalink: 'garage-technology-ventures'
},
person: null
},
{
company: null,
financial_org: {
name: 'Pritzker Group Venture Capital',
permalink: 'pritzker-group-venture-capital'
},
person: null
},
{
company: null,
financial_org: { name: 'Ironside Ventures', permalink: 'ironside-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Valhalla Partners', permalink: 'valhalla-partners' },
person: null
},
{
company: null,
financial_org: { name: 'Vista Ventures', permalink: 'vista-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'JPMorgan Chase & Co', permalink: 'jpmorgan-chase-co' },
person: null
},
{
company: null,
financial_org: {
name: 'DFJ Portage Ventures',
permalink: 'dfj-portage-ventures'
},
person: null
}
]
},
{
raised_amount: 49500000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: { name: 'Versant Ventures', permalink: 'versant-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Skyline Ventures', permalink: 'skyline-ventures' },
person: null
},
{
company: null,
financial_org: {
name: 'Three Arch Partners',
permalink: 'three-arch-partners'
},
person: null
},
{
company: null,
financial_org: {
name: 'Affinity Capital Management',
permalink: 'affinity-capital-management'
},
person: null
},
{
company: null,
financial_org: { name: 'Alloy Ventures', permalink: 'alloy-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Delphi Ventures', permalink: 'delphi-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'GBS Ventures', permalink: 'gbs-ventures' },
person: null
},
{
company: null,
financial_org: {
name: 'INVESCO Private Capital',
permalink: 'invesco-private-capital'
},
person: null
},
{
company: null,
financial_org: {
name: 'J.P. Morgan Securities Inc.',
permalink: 'j-p-morgan-securities-inc'
},
person: null
},
{
company: null,
financial_org: { name: 'ONSET Ventures', permalink: 'onset-ventures' },
person: null
}
]
},
{
raised_amount: 1400000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: {
name: 'Accelerator Ventures',
permalink: 'accelerator-ventures'
},
person: null
},
{
company: null,
financial_org: { name: 'JAIC America', permalink: 'jaic-america' },
person: null
},
{
company: null,
financial_org: {
name: 'Pacific I&T Ventures',
permalink: 'pacific-i-t-ventures'
},
person: null
},
{
company: null,
financial_org: null,
person: {
first_name: 'Eric',
last_name: 'Di Benedetto',
permalink: 'eric-di-benedetto'
}
},
{
company: null,
financial_org: {
name: 'iSteps App Ventures',
permalink: 'isteps-app-ventures'
},
person: null
},
{
company: null,
financial_org: null,
person: {
first_name: 'Ben T.',
last_name: 'Smith, IV',
permalink: 'ben-smith-iv'
}
},
{
company: null,
financial_org: null,
person: {
first_name: 'Tim',
last_name: 'Stevens',
permalink: 'tim-stevens'
}
},
{
company: null,
financial_org: null,
person: {
first_name: 'Fabrice',
last_name: 'Grinda',
permalink: 'fabrice-grinda'
}
},
{
company: null,
financial_org: { name: 'LaunchCapital', permalink: 'launchcapital' },
person: null
}
]
},
{
raised_amount: 1000000,
raised_currency_code: 'USD',
investments: [
{
company: null,
financial_org: {
name: 'DFJ Gotham Ventures',
permalink: 'dfj-gotham-ventures'
},
person: null
},
{
company: null,
financial_org: {
name: 'Metamorphic Ventures',
permalink: 'metamorphic-ventures-llc'
},
person: null
},
{
company: null,
financial_org: { name: 'RRE Ventures', permalink: 'rre-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Pilot Group', permalink: 'pilot-group' },
person: null
},
{
company: null,
financial_org: { name: 'AOL Ventures', permalink: 'aol-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Lerer Ventures', permalink: 'lerer-ventures' },
person: null
},
{
company: null,
financial_org: { name: 'Bowery Capital', permalink: 'bowery-capital' },
person: null
}
]
}
]

돌아가기

hasAncestor

이 페이지의 내용