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

MongoDB Search에서 뷰 사용

에서 MongoDB Search 인덱스를 생성하여 문서와 컬렉션을 변환할 수 있습니다. 이를 통해 컬렉션을 부분적으로 인덱싱하고, 호환되지 않는 데이터 유형 또는 데이터 모델을 지원하는 등의 작업을 수행할 수 있습니다.

다음 예시에서는 sample_mflixsample_airbnb 샘플 데이터베이스를 사용합니다.

참고

명확화

이 페이지에서는 표준 보기에 대해 설명합니다. 온디맨드 구체화된 보기에 대한 자세한 내용은 온디맨드 구체화 보기를 참조하세요.

보기 유형 간의 차이점에 대해 알아보려면 온디맨드 구체화 보기의 비교를 참조하세요.

MongoDB 8.0 이상을 사용해야 합니다.

  • MongoDB v8.0 이상:

    • Atlas UI 또는 Atlas 관리 API 사용하여 View에 MongoDB Search 인덱스를 생성합니다.

    • 소스 컬렉션 에 대해 MongoDB Search 쿼리를 실행합니다. 뷰에서 생성된 MongoDB Search 인덱스 참조합니다. 이러한 쿼리는 소스 컬렉션 에 나타나는 원본 문서를 반환합니다.

  • MongoDB v8.1 이상에서는 추가로 다음을 수행할 수 있습니다.

보기를 편집하려면 사용자 관리자 역할이 있어야 하며 collMod 데이터베이스 명령을 사용해야 합니다.

  • MongoDB Search는 다음 단계로 뷰를 지원합니다.

  • 인덱스 이름은 소스 컬렉션과 모든 보기에서 고유해야 합니다.

  • MongoDB Search는 $$USER_ROLES 시스템 변수 및 $rand 집계 연산자 와 같이 동적 결과를 생성하는 연산자가 있는 뷰 정의를 지원 하지 않습니다.

  • MongoDB Search 쿼리는 소스 컬렉션 에 나타나는 원본 문서를 반환합니다.

  • 변환된 문서를 조회하려면 storedSource 옵션을 사용합니다.

보기를 생성하려면 역할에 createCollection 권한이 있어야 합니다.

다음 예제에서는 뷰를 만들고 문서를 부분적으로 인덱스 하며 인덱스 에 대해 쿼리를 실행 방법을 보여 줍니다. 이 예제에서는 소스 컬렉션 또는 뷰에 대해 .aggregate 명령을 실행 하여 인덱스 쿼리 . MongoDB Search는 MongoDB v8.1 이상에서만 직접 보기에 대한 쿼리를 지원합니다.

컬렉션을 부분적으로 인덱싱하도록 문서를 필터링합니다.

문서를 필터링하여 컬렉션을 부분적으로 인덱싱할 수 있습니다. 다음 예시는 sample_mflix.movies 컬렉션에 보기를 생성하여 2000년 1월 1일 이후에 개봉한 영화만 검색할 수 있도록 합니다.

1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_mflix
3
db.createView(
"movies_ReleasedAfter2000",
"movies",
[
{
$match: {
$expr: {
$gt: [
"$released",
ISODate("2000-01-01")
]
}
}
}
]
)
4
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Clusters를 클릭합니다.

Clusters(클러스터) 페이지가 표시됩니다.

5

Search & Vector Search 옵션 또는 Data Explorer에서 MongoDB 검색하다 페이지로 이동할 수 있습니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Search & Vector Search를 클릭합니다.

    • 클러스터가 없는 경우 Create cluster를 클릭하여 클러스터를 생성합니다. 자세히 알아보려면 클러스터 생성을 참조하세요.

    • 프로젝트에 여러 클러스터가 있는 경우 Select cluster 드롭다운에서 사용할 클러스터를 선택한 후 Go to Search를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Data Explorer를 클릭합니다.

  4. 데이터베이스를 확장하고 컬렉션을 선택합니다.

  5. 컬렉션의 Indexes 탭을 클릭합니다.

  6. 배너에서 Search and Vector Search 링크를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

6
7

페이지에서 다음 항목을 선택한 후 Next를 클릭합니다.

Search Type

MongoDB Search 인덱스 유형을 선택합니다.

Index Name and Data Source

다음 정보를 지정합니다.

  • Index Name: releasedAfter2000Index

  • Database and Collection:

    • sample_mflix
    • movies_ReleasedAfter2000

Configuration Method

안내를 따라 진행하려면 Visual Editor을(를) 선택하세요.

원시 인덱스 정의를 편집하려면 JSON Editor을 선택합니다.

중요한: |fts| 인덱스 이름은 기본값 으로 ``autoembed_index` 입니다. 여러 인덱스를 생성하는 경우 인덱스 전체에서 일관적인 되고 설명이 포함된 명명 규칙을 유지하는 것이 좋습니다.

8

Atlas는 인덱스가 구축 중임을 알리기 위해 토스트(간단한 비대화형 알림)를 표시합니다.

9

새로 생성된 인덱스가 Atlas Search 탭에 나타납니다. 인덱스가 빌드되는 동안 Status 필드는 Build in Progress를 읽습니다. 인덱스 빌드가 완료되면 Status 필드에 Active가 표시됩니다.

참고: 컬렉션이 클수록 인덱스 데 시간이 오래 걸립니다. 인덱스 작성이 완료되면 이메일 알림을 받게 됩니다.

10

쿼리할 인덱스 오른쪽에 있는 Query 버튼을 클릭합니다.

11

JSON 형식의 기본 쿼리 구문 샘플을 보려면 Edit Query을(를) 클릭합니다.

12
[
{
"$search": {
"index": "releasedAfter2000Index",
"text": {
"path": "title",
"query": "foo"
},
"sort": {
"released": 1
}
}
}
]
SCORE: 3.120296001434326 _id: “573a13d2f29313caabd929f8”
awards: Object
cast: Array (4)
countries: Array (1)
directors: Array (1)
fullplot: "Rising from the ashes of Nirvana, the Foo Fighters became a Grammy-win…"
genres: Array (2)
imdb: Object
languages: Array (1)
lastupdated: "2015-08-19 00:00:25.937000000"
num_mflix_comments: 0
plot: "Rising from the ashes of Nirvana, the Foo Fighters became a Grammy-win…"
poster: "https://m.media-amazon.com/images/M/MV5BMzE4OTczMTgxM15BMl5BanBnXkFtZT…"
released: 2011-04-05T00:00:00.000+00:00
runtime: 150
title: "Foo Fighters: Back and Forth"
tomatoes: Object
type: "movie"
year: 2011
1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_mflix
3
db.createView(
"movies_ReleasedAfter2000",
"movies",
[
{
$match: {
$expr: {
$gt: [
"$released",
ISODate("2000-01-01")
]
}
}
}
]
)
4
db.movies_ReleasedAfter2000.createSearchIndex(
"releasedAfter2000Index",
{
"mappings": {
"dynamic": true
}
}
)
5
db.movies_ReleasedAfter2000.aggregate([
{
$search: {
index: "releasedAfter2000Index",
text: {
path: "title",
query: "foo"
},
sort: {
released: 1
}
}
}
])
[
{
_id: ObjectId('573a13d2f29313caabd929f8'),
plot: "Rising from the ashes of Nirvana, the Foo Fighters became a Grammy-winning sensation on their own. Sixteen years of the band's history comes to life in this documentary, from their demo ...",
genres: [ 'Documentary', 'Music' ],
runtime: 150,
cast: [
'Shawn Cloninger',
'William Goldsmith',
'Jessy Greene',
'Dave Grohl'
],
num_mflix_comments: 0,
poster: 'https://m.media-amazon.com/images/M/MV5BMzE4OTczMTgxM15BMl5BanBnXkFtZTcwNTU1NjQxOA@@._V1_SY1000_SX677_AL_.jpg',
title: 'Foo Fighters: Back and Forth',
fullplot: `Rising from the ashes of Nirvana, the Foo Fighters became a Grammy-winning sensation on their own. Sixteen years of the band's history comes to life in this documentary, from their demo tapes through the creation of their 2011 album, "Wasting Light."`,
languages: [ 'English' ],
released: ISODate('2011-04-05T00:00:00.000Z'),
directors: [ 'James Moll' ],
awards: { wins: 1, nominations: 1, text: '1 win & 1 nomination.' },
lastupdated: '2015-08-19 00:00:25.937000000',
year: 2011,
imdb: { rating: 8.4, votes: 3745, id: 1853563 },
countries: [ 'USA' ],
type: 'movie',
tomatoes: {
viewer: { rating: 4.4, numReviews: 857, meter: 96 },
dvd: ISODate('2011-08-08T00:00:00.000Z'),
website: 'http://us.foofightersfilm.com/',
production: 'Cinedigm Digital Cinema',
lastUpdated: ISODate('2015-09-12T18:42:01.000Z')
}
}
]

뷰를 사용해 필드를 추가하거나 수정합니다.

다음 예시 pricecleaningFee 필드의 합계인 새 totalPrice 필드 를 기반으로 sample_airbnb.listingsAndReviews 컬렉션 에서 숙박 시설을 검색 할 수 있습니다. 또한 MongoDB Search는 Decimal128 유형을 지원 하지 않으므로 값을 Double로 변환합니다.

1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_airbnb
3
db.createView(
"listingsAndReviews_totalPrice",
"listingsAndReviews",
[
{
$addFields: {
totalPrice: {
$add: [
{
$ifNull: [{ $toDouble: "$price" }, 0]
},
{
$ifNull: [{ $toDouble: "$cleaning_fee" }, 0]
}
]
}
}
}
]
)
4
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Clusters를 클릭합니다.

Clusters(클러스터) 페이지가 표시됩니다.

5

Search & Vector Search 옵션 또는 Data Explorer에서 MongoDB 검색하다 페이지로 이동할 수 있습니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Search & Vector Search를 클릭합니다.

    • 클러스터가 없는 경우 Create cluster를 클릭하여 클러스터를 생성합니다. 자세히 알아보려면 클러스터 생성을 참조하세요.

    • 프로젝트에 여러 클러스터가 있는 경우 Select cluster 드롭다운에서 사용할 클러스터를 선택한 후 Go to Search를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Data Explorer를 클릭합니다.

  4. 데이터베이스를 확장하고 컬렉션을 선택합니다.

  5. 컬렉션의 Indexes 탭을 클릭합니다.

  6. 배너에서 Search and Vector Search 링크를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

6

페이지에서 다음 항목을 선택한 후 Next를 클릭합니다.

Search Type

MongoDB Search 인덱스 유형을 선택합니다.

Index Name and Data Source

다음 정보를 지정합니다.

  • Index Name: listingsSearchablePrice

  • Database and Collection:

    • sample_airbnb
    • listings_SearchablePrice

Configuration Method

원시 인덱스 정의를 편집하려면 JSON Editor 를 선택합니다.

7

다음 인덱스 정의를 복사하여 붙여넣고 UI의 기본값 인덱스 정의를 변경합니다.

{
"mappings": {
"dynamic": true
},
"storedSource": {
"include": [
"totalPrice"
]
}
}
8

Atlas는 인덱스가 구축 중임을 알리기 위해 토스트(간단한 비대화형 알림)를 표시합니다.

9

새로 생성된 인덱스가 Atlas Search 탭에 나타납니다. 인덱스가 빌드되는 동안 Status 필드는 Build in Progress를 읽습니다. 인덱스 빌드가 완료되면 Status 필드에 Active가 표시됩니다.

참고: 컬렉션이 클수록 인덱스 데 시간이 오래 걸립니다. 인덱스 작성이 완료되면 이메일 알림을 받게 됩니다.

10

쿼리할 인덱스 오른쪽에 있는 Query 버튼을 클릭합니다.

11

JSON 형식의 기본 쿼리 구문 샘플을 보려면 Edit Query을(를) 클릭합니다.

12
[
{
"$search": {
"index": "totalPriceIndex",
"range": {
"path": "totalPrice",
"lte": 300
},
"returnStoredSource": true
}
}
]
SCORE: 1 _id: "10006546"
totalPrice: 115
SCORE: 1 _id: "1001265"
totalPrice: 215
SCORE: 1 _id: "10021707"
totalPrice: 40
SCORE: 1 _id: "1003530"
totalPrice: 270
SCORE: 1 _id: "10038496"
totalPrice: 269
SCORE: 1 _id: "10051164"
totalPrice: 250
SCORE: 1 _id: "10057447"
totalPrice: 50
SCORE: 1 _id: "10057826"
totalPrice: 205
SCORE: 1 _id: "10059244"
totalPrice: 43
SCORE: 1 _id: "10066928"
totalPrice: 140
1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_airbnb
3
db.createView(
"listingsAndReviews_totalPrice",
"listingsAndReviews",
[
{
$addFields: {
totalPrice: {
$add: [
{
$ifNull: [{ $toDouble: "$price" }, 0]
},
{
$ifNull: [{ $toDouble: "$cleaning_fee" }, 0]
}
]
}
}
}
]
)
4
db.listingsAndReviews_totalPrice.createSearchIndex(
"totalPriceIndex",
{
"mappings": {
"dynamic": true
},
"storedSource": {
"include": [
"totalPrice"
]
}
}
)
5
db.listingsAndReviews_totalPrice.aggregate([
{
$search: {
index: "totalPriceIndex",
range: {
path: "totalPrice",
lte: 300
},
returnStoredSource: true
}
}
])
[
{ _id: '10006546', totalPrice: 115 },
{ _id: '1001265', totalPrice: 215 },
{ _id: '10021707', totalPrice: 40 },
{ _id: '1003530', totalPrice: 270 },
{ _id: '10038496', totalPrice: 269 },
{ _id: '10051164', totalPrice: 250 },
{ _id: '10057447', totalPrice: 50 },
{ _id: '10057826', totalPrice: 205 },
{ _id: '10059244', totalPrice: 43 },
{ _id: '10066928', totalPrice: 140 },
{ _id: '10082422', totalPrice: 60 },
{ _id: '10083468', totalPrice: 40 },
{ _id: '10084023', totalPrice: 231 },
{ _id: '10091713', totalPrice: 231 },
{ _id: '10092679', totalPrice: 58 },
{ _id: '10096773', totalPrice: 205 },
{ _id: '10112159', totalPrice: 90 },
{ _id: '10117617', totalPrice: 55 },
{ _id: '10120414', totalPrice: 150 },
{ _id: '10133554', totalPrice: 121 }
]

정규식을 사용하여 명명 패턴이 있는 필드에 대한 동적 인덱싱을 구성합니다.

이름 지정 패턴 일치하는 필드를 인덱스 하려면 뷰를 사용하여 인덱스 할 필드가 하위 문서에 중첩되도록 데이터를 변환합니다. 이렇게 하면 하위 문서 경로에 동적 매핑을 사용하여 인덱스 _type 정의를 변경하지 않고도 접미사 가 있는 모든 새 필드를 자동으로 검색 할 수 있습니다.

listings_SearchableTypes라는 이름의 다음 Viewsample_airbnb.listingsAndReviews 컬렉션에서 _type으로 끝나는 필드 이름과만 일치합니다. 구체적으로, $set 단계는 searchable_types라는 새 필드를 추가하며, 이 필드에는 필드 이름에 _type 텀이 포함된 필터링된 필드가 포함됩니다. $arrayToObject에는 필터 입력(전체 문서)과 조건(_type에 대한 정규식 일치)이 포함되어 있습니다.

1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_airbnb
3
1db.createView(
2 "listings_SearchableTypes",
3 "listingsAndReviews",
4 [
5 {
6 "$set": {
7 "searchable_types": {
8 "$arrayToObject": {
9 "$filter": {
10 "input": { "$objectToArray": "$$ROOT" },
11 "cond": {
12 "$regexMatch": {
13 "input": "$$this.k",
14 "regex": /_type$/
15 }
16 }
17 }
18 }
19 }
20 }
21 }
22 ]
23)
4
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Clusters를 클릭합니다.

Clusters(클러스터) 페이지가 표시됩니다.

5

Search & Vector Search 옵션 또는 Data Explorer에서 MongoDB 검색하다 페이지로 이동할 수 있습니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Search & Vector Search를 클릭합니다.

    • 클러스터가 없는 경우 Create cluster를 클릭하여 클러스터를 생성합니다. 자세히 알아보려면 클러스터 생성을 참조하세요.

    • 프로젝트에 여러 클러스터가 있는 경우 Select cluster 드롭다운에서 사용할 클러스터를 선택한 후 Go to Search를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Data Explorer를 클릭합니다.

  4. 데이터베이스를 확장하고 컬렉션을 선택합니다.

  5. 컬렉션의 Indexes 탭을 클릭합니다.

  6. 배너에서 Search and Vector Search 링크를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

6

페이지에서 다음 항목을 선택한 후 Next를 클릭합니다.

Search Type

MongoDB Search 인덱스 유형을 선택합니다.

Index Name and Data Source

다음 정보를 지정합니다.

  • Index Name: listingsSearchablePrice

  • Database and Collection:

    • sample_airbnb
    • listings_SearchablePrice

Configuration Method

원시 인덱스 정의를 편집하려면 JSON Editor 를 선택합니다.

7

다음 인덱스 정의를 복사하여 붙여넣고 UI의 기본값 인덱스 정의를 변경합니다.

{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"searchable_types": [
{
"dynamic": {
"typeSet": "tokenTypeSet"
},
"type": "document"
}
]
}
},
"typeSets": [
{
"name": "tokenTypeSet",
"types": [
{
"type": "token"
}
]
}
]
}
8

Atlas는 인덱스가 구축 중임을 알리기 위해 토스트(간단한 비대화형 알림)를 표시합니다.

9

새로 생성된 인덱스가 Atlas Search 탭에 나타납니다. 인덱스가 빌드되는 동안 Status 필드는 Build in Progress를 읽습니다. 인덱스 빌드가 완료되면 Status 필드에 Active가 표시됩니다.

참고: 컬렉션이 클수록 인덱스 데 시간이 오래 걸립니다. 인덱스 작성이 완료되면 이메일 알림을 받게 됩니다.

10

쿼리할 인덱스 오른쪽에 있는 Query 버튼을 클릭합니다.

11

JSON 형식의 기본 쿼리 구문 샘플을 보려면 Edit Query을(를) 클릭합니다.

12

다음 쿼리는 listings_SearchableTypes라는 뷰에서 house에 대해 private room을 검색합니다. 이 쿼리를 실행하려면 쿼리를 복사하여 붙여넣고 Search을 클릭합니다.

[
{
"$search": {
"index": "listingsSearchableTypes",
"compound": {
"should": [
{
"text": {
"path": "searchable_types.property_type",
"query": "House"
}
},
{
"text": {
"path": "searchable_types.room_type",
"query": "Private room"
}
}
]
}
}
}
]
SCORE: 2.0530142784118652 _id: "10051164"
name: "Catete's Colonial Big Hause Room B",
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "1016739"
name: 'Private Room (2) in Guest House at Coogee Beach',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "10324377"
name: 'Suíte em local tranquilo e seguro',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "1073607"
name: 'Bright Inner West Terrace Value+',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "1077686"
name: 'BALAT',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "10990260"
name: 'The Executive Posh Room',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "10992286"
name: 'Holoholo Inn: Rain Forest (Priv-2)',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "11396243"
name: 'Beautiful Ensuite Room -Easy access to city',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "1145567"
name: 'ROOM + ENSUITE INNER CITY MOD HOUSE',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
SCORE: 2.0530142784118652 _id: "11464859"
name: 'The Sassy Lilac Megan Love Room',
searchable_types: Object
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_airbnb
3
db.createView(
"listings_SearchableTypes",
"listingsAndReviews",
[
{
"$set": {
"searchable_types": {
"$arrayToObject": {
"$filter": {
"input": { "$objectToArray": "$$ROOT" },
"cond": {
"$regexMatch": {
"input": "$$this.k",
"regex": /_type$/
}
}
}
}
}
}
}
]
)
4

listingsSearchableTypes 라는 View에 대한 다음 인덱스 정의는 typeSetsearchable_types 문서의 모든 필드를 string 유형으로 자동 인덱싱하도록 구성합니다. 이 패턴과 일치하는 새 필드를 추가하면 MongoDB Search에서 해당 필드도 자동으로 인덱싱합니다.

db.listings_SearchableTypes.createSearchIndex(
"listingsSearchableTypes",
{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"searchable_types": [
{
"type": "document",
"dynamic": {
"typeSet": "tokenTypeSet"
}
}
]
}
},
"typeSets": [
{
"name": "tokenTypeSet",
"types": [
{
"type": "token"
}
]
}
]
}
)
5

다음 쿼리는 private room을 사용하여 listings_SearchableTypes 라는 뷰에서 house를 검색합니다.

db.listings_SearchableTypes.aggregate([
{
"$search": {
"index": "listingsSearchableTypes",
"compound": {
"should": [
{
"equals": {
"path": "searchable_types.property_type",
"value": "House"
}
},
{
"equals": {
"path": "searchable_types.room_type",
"value": "Private room"
}
}
]
}
}
},
{
"$limit": 10
},
{
"$project": {
"_id": 0,
"searchable_types": 1,
"name": 1
}
}
])
[
{
name: "Catete's Colonial Big Hause Room B",
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'Private Room (2) in Guest House at Coogee Beach',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'Suíte em local tranquilo e seguro',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'Bright Inner West Terrace Value+',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'BALAT',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'The Executive Posh Room',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'Holoholo Inn: Rain Forest (Priv-2)',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'Beautiful Ensuite Room -Easy access to city',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'ROOM + ENSUITE INNER CITY MOD HOUSE',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
},
{
name: 'The Sassy Lilac Megan Love Room',
searchable_types: {
property_type: 'House',
room_type: 'Private room',
bed_type: 'Real Bed'
}
}
]

이러한 필드 유형에서 지원되지 않는 필드 유형을 문자열에서 패싯 으로 변환합니다.

부울, objectId 또는 UUID와 같이 지원되지 않는 필드 유형을 패싯 하려면 값을 문자열 유형으로 변환하는 것이 좋습니다.

다음 예시 sample_airbnb.listingsAndReviews boolean 유형 host.host_is_superhost 필드 와 objectID 유형 _id 필드 에 대해 패싯 지정할 수 있도록 네임스페이스 에 뷰를 만듭니다.

1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_airbnb
3
1db.createView(
2 "listings_SearchableTypes",
3 "listingsAndReviews",
4 [
5 {
6 "$addFields": {
7 "idString": { "$toString": "$_id" },
8 "superHostString": { "$toString": "$host.host_is_superhost" }
9 }
10 }
11 ]
12)
4
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Clusters를 클릭합니다.

Clusters(클러스터) 페이지가 표시됩니다.

5

Search & Vector Search 옵션 또는 Data Explorer에서 MongoDB 검색하다 페이지로 이동할 수 있습니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Search & Vector Search를 클릭합니다.

    • 클러스터가 없는 경우 Create cluster를 클릭하여 클러스터를 생성합니다. 자세히 알아보려면 클러스터 생성을 참조하세요.

    • 프로젝트에 여러 클러스터가 있는 경우 Select cluster 드롭다운에서 사용할 클러스터를 선택한 후 Go to Search를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Data Explorer를 클릭합니다.

  4. 데이터베이스를 확장하고 컬렉션을 선택합니다.

  5. 컬렉션의 Indexes 탭을 클릭합니다.

  6. 배너에서 Search and Vector Search 링크를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

6

페이지에서 다음 항목을 선택한 후 Next를 클릭합니다.

Search Type

MongoDB Search 인덱스 유형을 선택합니다.

Index Name and Data Source

다음 정보를 지정합니다.

  • Index Name: listingsSearchablePrice

  • Database and Collection:

    • sample_airbnb
    • listings_SearchablePrice

Configuration Method

원시 인덱스 정의를 편집하려면 JSON Editor 를 선택합니다.

7

다음 인덱스 정의를 복사하여 붙여넣고 UI의 기본값 인덱스 정의를 변경합니다.

{
"mappings": {
"dynamic": true,
"fields": {
"idString": {
"type": "token"
},
"superHostString": {
"type": "token"
}
}
}
}

앞의 인덱스 정의는 idStringsuperHostString 필드를 token 유형으로 인덱싱하여 이러한 필드에 대한 패싯을 지원 .

8

Atlas는 인덱스가 구축 중임을 알리기 위해 토스트(간단한 비대화형 알림)를 표시합니다.

9

새로 생성된 인덱스가 Atlas Search 탭에 나타납니다. 인덱스가 빌드되는 동안 Status 필드는 Build in Progress를 읽습니다. 인덱스 빌드가 완료되면 Status 필드에 Active가 표시됩니다.

참고: 컬렉션이 클수록 인덱스 데 시간이 오래 걸립니다. 인덱스 작성이 완료되면 이메일 알림을 받게 됩니다.

10

쿼리할 인덱스 오른쪽에 있는 Query 버튼을 클릭합니다.

11

JSON 형식의 기본 쿼리 구문 샘플을 보려면 Edit Query을(를) 클릭합니다.

12

다음 쿼리 listings_SearchableTypes 인덱스 에서 ocean view 에 대한 summary 필드 검색합니다. 이 쿼리 각각의 고유한 _idhost.host_is_superhost에 속하는 속성 수의 개수를 검색합니다. 이 쿼리 실행 하려면 쿼리 복사하여 붙여넣고 Search를 클릭합니다.

[{
"$searchMeta": {
"index": "listingsSearchableTypes",
"facet":{
"operator": {
"text": {
"path": "summary",
"query": "ocean view"
}
},
"facets": {
"idFacet" : {
"type" : "string",
"path" : "idString",
"numBuckets" : 10,
},
"hostFacet": {
"type" : "string",
"path" : "superHostString"
}
}
}
}
}]
count: Object
lowerBound: 510
facet: Object
idFacet: Object
buckets: Array (10)
0: Object
_id: "10082422"
count: 1
1: Object
_id: "10166986"
count: 1
2: Object
_id: "10266175"
count: 1
3: Object
_id: "10267144"
count: 1
4: Object
_id: "10317142"
count: 1
5: Object
_id: "10359729"
count: 1
6: Object
_id: "10392282"
count: 1
7: Object
_id: "10548991"
count: 1
8: Object
_id: "1067052"
count: 1
9: Object
_id: "1069531"
count: 1
hostFacet: Object
buckets: Array (2)
0: Object
_id: "false"
count: 370
1: Object
_id: "true"
count: 140
1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_airbnb
3

다음 보기에는 다음 두 필드가 포함됩니다.

  • idString _id 필드를 string 유형으로 변환한 후 해당 필드 의 값을 포함합니다.

  • superHostString host.host_is_superhost 필드를 string 유형으로 변환한 후 해당 필드 의 값을 포함합니다.

db.createView(
"listings_SearchableTypes",
"listingsAndReviews",
[
{
"$addFields": {
"idString": { "$toString": "$_id" },
"superHostString": { "$toString": "$host.host_is_superhost" }
}
}
]
)
4

다음 인덱스 정의는 idStringsuperHostString 필드를 token 유형으로 인덱싱하여 이러한 필드에 대한 패싯을 지원 .

db.listings_SearchableTypes.createSearchIndex(
"listingsSearchableTypes",
{
"mappings": {
"dynamic": true,
"fields": {
"idString": {
"type": "token"
},
"superHostString": {
"type": "token"
}
}
}
}
)
5

다음 쿼리 summary 필드 에서 ocean view 에 대한 listings_SearchableTypes 인덱스 검색합니다. 이 쿼리 각각의 고유한 _idhost.host_is_superhost에 속하는 속성 수의 개수를 검색합니다.

db.listings_SearchableTypes.aggregate([{
"$searchMeta": {
"index": "listingsSearchableTypes",
"facet":{
"operator": {
"text": {
"path": "summary",
"query": "ocean view"
}
},
"facets": {
"idFacet" : {
"type" : "string",
"path" : "idString",
"numBuckets" : 10,
},
"hostFacet": {
"type" : "string",
"path" : "superHostString"
}
}
}
}
}])
[
{
count: { lowerBound: Long('510') },
facet: {
idFacet: {
buckets: [
{ _id: '10082422', count: Long('1') },
{ _id: '10166986', count: Long('1') },
{ _id: '10266175', count: Long('1') },
{ _id: '10267144', count: Long('1') },
{ _id: '10317142', count: Long('1') },
{ _id: '10359729', count: Long('1') },
{ _id: '10392282', count: Long('1') },
{ _id: '10548991', count: Long('1') },
{ _id: '1067052', count: Long('1') },
{ _id: '1069531', count: Long('1') }
]
},
hostFacet: {
buckets: [
{ _id: 'false', count: Long('370') },
{ _id: 'true', count: Long('140') }
]
}
}
}
]

십진수128 유형을 이중 유형으로 변환합니다.

십진수 유형 필드를 검색 하려면 값을 이중128 유형으로 변환하는 것이 좋습니다.

다음 예시 sample_airbnb.listingsAndReviews 네임스페이스 에 뷰를 만들어 price 필드 와 cleaning_fee 필드 의 값을 double로 변환한 후 해당 필드의 합계를 포함하는 totalPrice이라는 필드 추가합니다.

1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_airbnb
3

다음 뷰에는 pricecleaning-fee 필드의 값 합계가 포함된 totalPrice 필드 포함되어 있습니다. 이러한 필드의 값을 추가하기 전에 다음 코드는 pricecleaning-fee 필드의 값을 double 유형으로 변환합니다.

1db.createView(
2 "listings_SearchablePrice",
3 "listingsAndReviews",
4 [
5 {
6 "$addFields": {
7 "totalPrice": {
8 "$add": [
9 {
10 "$ifNull": [{ "$toDouble": "$price" }, 0]
11 },
12 {
13 "$ifNull": [{ "$toDouble": "$cleaning_fee" }, 0]
14 }
15 ]
16 }
17 }
18 }
19 ]
20)
4
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Clusters를 클릭합니다.

Clusters(클러스터) 페이지가 표시됩니다.

5

Search & Vector Search 옵션 또는 Data Explorer에서 MongoDB 검색하다 페이지로 이동할 수 있습니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Search & Vector Search를 클릭합니다.

    • 클러스터가 없는 경우 Create cluster를 클릭하여 클러스터를 생성합니다. 자세히 알아보려면 클러스터 생성을 참조하세요.

    • 프로젝트에 여러 클러스터가 있는 경우 Select cluster 드롭다운에서 사용할 클러스터를 선택한 후 Go to Search를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Database 제목 아래의 Data Explorer를 클릭합니다.

  4. 데이터베이스를 확장하고 컬렉션을 선택합니다.

  5. 컬렉션의 Indexes 탭을 클릭합니다.

  6. 배너에서 Search and Vector Search 링크를 클릭합니다.

    검색 & 벡터 검색 페이지가 표시됩니다.

6

페이지에서 다음 항목을 선택한 후 Next를 클릭합니다.

Search Type

MongoDB Search 인덱스 유형을 선택합니다.

Index Name and Data Source

다음 정보를 지정합니다.

  • Index Name: listingsSearchablePrice

  • Database and Collection:

    • sample_airbnb
    • listings_SearchablePrice

Configuration Method

원시 인덱스 정의를 편집하려면 JSON Editor 를 선택합니다.

7

Atlas는 인덱스가 구축 중임을 알리기 위해 토스트(간단한 비대화형 알림)를 표시합니다.

8

새로 생성된 인덱스가 Atlas Search 탭에 나타납니다. 인덱스가 빌드되는 동안 Status 필드는 Build in Progress를 읽습니다. 인덱스 빌드가 완료되면 Status 필드에 Active가 표시됩니다.

참고: 컬렉션이 클수록 인덱스 데 시간이 오래 걸립니다. 인덱스 작성이 완료되면 이메일 알림을 받게 됩니다.

9

쿼리할 인덱스 오른쪽에 있는 Query 버튼을 클릭합니다.

10

JSON 형식의 기본 쿼리 구문 샘플을 보려면 Edit Query을(를) 클릭합니다.

11

다음 쿼리 listingsSearchablePrice 이라는 인덱스 에서 100 ~ 200 사이의 비용 속성을 검색합니다. 이 쿼리 실행 하려면 쿼리 복사하여 붙여넣고 Search를 클릭합니다.

[
{
"$search": {
"index": "listingsSearchablePrice",
"range": {
"path": "totalPrice",
"gte": 100,
"lte": 200
}
}
}
]
SCORE: 1 _id: "10006546"
access: "We are always available to help guests. The house is fully available t…"
accommodates: 8
address: Object
price: 80.00
SCORE: 1 _id: "10066928"
access: "Le logement sera disponible en entier pour votre séjour."
accommodates: 6
address: Object
price: 140.00
SCORE: 1 _id: "10120414"
access: "You can access to the rooftop where you have a beautiful view of Empir…"
accommodates: 3
address: Object
price: 150.00
SCORE: 1 _id: "10133554"
access: "We have bathroom,wc,İnternet in rooms and under rooms we have cafe bar…"
accommodates: 3
address: Object
price: 121.00
SCORE: 1 _id: "10186755"
access: ""
accommodates: 2
address: Object
price: 185.00
SCORE: 1 _id: "10213499"
access: "Guests have access to backyard saltwater pool"
accommodates: 2
address: Object
price: 117.00
SCORE: 1 _id: "1022200"
access: ""
accommodates: 6
address: Object
price: 135.00
SCORE: 1 _id: "10228731"
access: "O quarto é privativo, com acesso a todas as acomodações do apartamento…"
accommodates: 1
address: Object
price: 149.00
SCORE: 1 _id: "10359729"
access: ""
accommodates: 4
address: Object
price: 105.00
SCORE: 1 _id: "1036027"
access: ""
accommodates: 8
address: Object
price: 100.00
1

자세한 학습은 mongosh 통해 클러스터에 연결을참조하세요.

2
use sample_airbnb
3

다음 뷰에는 pricecleaning-fee 필드의 값 합계가 포함된 totalPrice 필드 포함되어 있습니다. 이러한 필드의 값을 추가하기 전에 다음 코드는 pricecleaning-fee 필드의 값을 double 유형으로 변환합니다.

db.createView(
"listings_SearchablePrice",
"listingsAndReviews",
[
{
"$addFields": {
"totalPrice": {
"$add": [
{
"$ifNull": [{ "$toDouble": "$price" }, 0]
},
{
"$ifNull": [{ "$toDouble": "$cleaning_fee" }, 0]
}
]
}
}
}
]
)
4

참고

클러스터 에서 MongoDB v8.0을 실행 경우 Atlas UI 또는 Atlas 관리 API 사용하여 인덱스 를 만듭니다.

db.listings_SearchablePrice.createSearchIndex(
"listingsSearchablePrice",
{
"mappings": {
"dynamic": true
}
}
)
5

다음 쿼리 listingsSearchablePrice 이라는 인덱스 에서 100 ~ 200 사이의 비용 속성을 검색합니다.

db.listingsAndReviews.aggregate([
{
"$search": {
"index": "listingsSearchablePrice",
"range": {
"path": "totalPrice",
"gte": 100,
"lte": 200
}
}
},
{
"$project": {
"_id": 0,
"totalPrice": 1,
"price": 1,
"cleaning_fee": 1
}
}
])
[
{ price: Decimal128('80.00'), cleaning_fee: Decimal128('35.00') },
{ price: Decimal128('140.00') },
{ price: Decimal128('150.00') },
{ price: Decimal128('121.00') },
{ price: Decimal128('185.00') },
{ price: Decimal128('117.00'), cleaning_fee: Decimal128('0.00') },
{ price: Decimal128('135.00') },
{ price: Decimal128('149.00'), cleaning_fee: Decimal128('30.00') },
{ price: Decimal128('105.00') },
{ price: Decimal128('100.00') },
{ price: Decimal128('138.00') },
{ price: Decimal128('100.00'), cleaning_fee: Decimal128('80.00') },
{ price: Decimal128('112.00'), cleaning_fee: Decimal128('0.00') },
{ price: Decimal128('80.00'), cleaning_fee: Decimal128('30.00') },
{ price: Decimal128('129.00'), cleaning_fee: Decimal128('60.00') },
{ price: Decimal128('112.00') },
{ price: Decimal128('100.00'), cleaning_fee: Decimal128('100.00') },
{ price: Decimal128('85.00'), cleaning_fee: Decimal128('15.00') },
{ price: Decimal128('85.00'), cleaning_fee: Decimal128('40.00') },
{ price: Decimal128('135.00'), cleaning_fee: Decimal128('50.00') }
]
Type "it" for more

다음 예시는 2000년 이전 영화에 대한 movies_ReleasedAfter2000 MongoDB 보기를 업데이트합니다.

db.runCommand(
{
collMod: "movies_ReleasedAfter2000",
viewOn: "movies",
"pipeline": [
{
$match: {
$expr: {
$lt: [
"$released",
ISODate("2000-01-01T00")
]
}
}
}
]
}
)

이 명령을 실행한 후 MongoDB Search는 보기 정의의 변경 사항을 자동으로 감지하고 다운타임 없이 재인덱싱을 수행합니다.

다음 예시는 movies_ReleasedAfter2000 보기에서 파이프라인을 반환합니다.

db.getCollectionInfos({ name: "movies_ReleasedAfter2000" })[0].options.pipeline
[
{
'$match': {
'$expr': { '$gt': [ '$released', ISODate('2000-01-01T00:00:00.000Z') ] }
}
}
]

매우 복잡한 뷰 변환은 인덱싱 및 쿼리 시간을 증가시킬 수 있습니다. 이는 mongod 가 인덱싱 중에 oplog 항목을 필터링하고 변환할 때( 초기 동기화 및 정상 상태 복제), 그리고 쿼리 시점에 반환된 문서에 이러한 변환을 적용할 때 뷰 정의를 읽어야 하기 때문입니다.

Atlas 에서 예비 복제 로드를 방지하려면 구체화된 뷰 를 생성하는 것이 좋습니다. 소스 컬렉션 직접 쿼리 뷰 변환으로 인한 쿼리 지연 시간 방지할 수도 있습니다.

다음 시나리오에서는 인덱스 상태가 FAILED로 변경됩니다.

  • MongoDB Search와 호환되지 않는 뷰에 인덱스 생성합니다.

  • MongoDB Search 호환성 요구 사항을 충족하지 않는 방식으로 뷰를 편집합니다.

  • 보기의 소스 컬렉션을 제거하거나 변경한 경우

    예를 들어 하나의 보기가 다른 보기를 기반으로 생성되었고 그 상위 보기 소스를 다른 컬렉션으로 변경하는 경우입니다.

    참고

    이 제한은 뷰가 다른 뷰의 하위인 경우에도 적용됩니다. 예를 들어, 모든 하위 항목의 출처가 되는 소스 컬렉션을 변경하거나 제거할 수 없습니다.

다음 시나리오에서는 인덱스 상태가 STALE로 변경됩니다.

경고

뷰에 정의된 집계 파이프라인이 컬렉션의 문서와 호환되지 않으면 검색 복제가 실패합니다. 예를 들어, 배열이 포함된 문서 필드에서 $toDouble 표현식이 작동하는 경우 복제가 실패합니다. 뷰가 컬렉션의 모든 문서에서 오류 없이 작동하는지 확인하세요.

  • 인덱스 READY인 동안 뷰 정의로 인해 집계 실패가 발생하면 인덱스 STALE이(가) 됩니다. 문서 확인하거나 더 이상 실패하지 않도록 뷰 정의를 변경한 후에는 인덱스 READY (으)로 돌아갑니다. STALE인 경우 인덱스 쿼리 가능한 상태로 유지됩니다. 인덱스 oplog에서 떨어지면 인덱스 재작성이 트리거됩니다.

  • 인덱스가 BUILDING일 때 뷰 정의가 집계 파이프라인 오류를 일으키면 문서를 수정할 때까지 인덱스 생성이 중단됩니다. 문서를 해결하거나 뷰 정의를 변경하여 더 이상 실패하지 않도록 하면 인덱스가 READY로 돌아갑니다.

Atlas UI의 인덱스 상태 세부 정보 페이지에서 인덱스 상태를 볼 수 있습니다.

이 오류는 8.1 이전 MongoDB 버전을 사용하여 뷰를 쿼리 때 나타납니다.

  • 8.0 이전 MongoDB 버전을 사용하는 경우 8.1+로 업그레이드 뷰를 직접 쿼리 것이 좋습니다. 8.0 으로 업그레이드 소스 컬렉션 쿼리 할 수 있습니다.

  • MongoDB 8.0을 사용하는 경우 소스 컬렉션 에 대해 뷰 인덱스 쿼리 해야 합니다. 예시 를 들어 보기 대신 컬렉션 에서 .aggregate() 를 실행 .

뷰에서 MongoDB Search 인덱스 생성하면 mongot 프로세스 일반 컬렉션 에서 MongoDB Search 인덱스 생성할 때와 동일한 작업을 수행합니다. mongot 프로세스:

  1. 컬렉션 에 대한 인덱스 정의의 규칙을 기반으로 MongoDB Search 인덱스를 생성합니다.

  2. MongoDB Search 인덱스를 정의한 컬렉션의 문서 및 인덱스의 현재 상태 에 대한 변경 스트림을 모니터링합니다.

  3. MongoDB Search 쿼리를 처리하고 일치하는 문서에 대한 문서 ID 및 기타 검색 메타데이터 mongod에 반환한 다음, 전체 문서 조회를 수행하고 결과를 클라이언트 에 반환합니다.

View에 MongoDB 검색 인덱스 만들면 1 단계와 2 단계에서 View 정의가 적용되고 변환된 문서는 검색 인덱스 정의를 기반으로 인덱싱된 다음 디스크에 저장됩니다.

뷰에 대한 자세한 내용은 를 참조하세요.

뷰에 MongoDB 벡터 검색 인덱스 만들려면 MongoDB 벡터 검색에 뷰 사용을 참조하세요.