Docs Menu
Docs Home
/
Atlas
/ / / /

in 연산자

MongoDB Search의 in 연산자 지정된 경로에서 BSON number, date, boolean, objectId, uuid 또는 string 값의 배열을 검색하여 다음을 반환합니다. 필드 값이 지정된 배열의 임의 값과 같은 문서입니다. 필드 에 배열 있는 경우 in 연산자 지정된 배열 의 값과 일치하는 요소가 하나 이상 포함된 배열 필드 에 있는 문서를 선택합니다.

in 연산자의 구문은 다음과 같습니다.

{
$search: {
"index": <index name>, // optional, defaults to "default"
"in": {
"path": "<field-to-search>",
"score": <options>,
"value": <single-or-array-of-values-to-search>
}
}
}
필드
유형
설명
필요성

path

문자열

검색할 인덱싱된 필드입니다. 검색할 와일드카드 경로를 지정할 수도 있습니다.

필드 에서 문자열 값을 검색 하려면 필드 MongoDB Search 토큰 유형으로 인덱스 해야 합니다.

필수 사항

score

객체

일치하는 검색어 결과에 할당할 점수입니다. 다음 옵션 중 하나를 사용하여 기본 점수를 수정합니다.

  • boost결과 점수에 주어진 숫자를 곱합니다.

  • constant결과 점수를 주어진 숫자로 바꿉니다.

  • function: 함수 표현식을 사용하여 결과 점수를 대체합니다.

옵션

value

검색할 값입니다. Value는 단일 값이거나 지원되는 BSON types 중 하나의 값 배열일 수 있으며 서로 다른 유형을 혼합할 수 없습니다.

필드에서 문자열 값을 검색하려면 해당 필드를 MongoDB Search 토큰 유형으로 인덱스 해야 합니다.

필수 사항

다음 예제에서는 in 연산자 사용하여 sample_analytics.customers 컬렉션 의 컬렉션을 쿼리 . 클러스터 에 샘플 데이터를 로드하고 컬렉션 에서 default 정적 매핑을 사용하는 이라는 이름의 MongoDB Search 인덱스 생성하면 컬렉션에 대해 다음 쿼리를 실행 수 있습니다.

샘플 인덱스 정의는 컬렉션의 인덱싱된 필드에 대한 in 연산자 쿼리를 지원하기 위해 다음 작업을 지정합니다.

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

  • name 필드를 토큰 유형으로 정적으로 인덱싱하고 필드의 텍스트를 소문자로 변환합니다.

{
"mappings": {
"index": "default",
"dynamic": true,
"fields": {
"name": {
"normalizer": "lowercase",
"type": "token"
}
}
}
}

MongoDB Search 인덱스 만드는 방법을 학습하려면 MongoDB Search 인덱스 관리를 참조하세요.

다음 쿼리는 지정된 날짜에 태어난 고객에 대해 단일 값이 포함된 birthdate 필드를 Atlas Search하기 위해 in 연산자를 사용합니다. 쿼리는 $project 단계를 사용하여 다음을 수행합니다.

  • 결과에서 _id 필드를 생략합니다.

  • 결과에 namebirthdate 필드만 포함합니다.

1db.customers.aggregate([
2 {
3 "$search": {
4 "in": {
5 "path": "birthdate",
6 "value": [ISODate("1977-03-02T02:20:31.000+00:00"), ISODate("1977-03-01T00:00:00.000+00:00"), ISODate("1977-05-06T21:57:35.000+00:00")]
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 0,
13 "name": 1,
14 "birthdate": 1
15 }
16 }
17])
1[
2 {
3 name: 'Elizabeth Ray',
4 birthdate: ISODate("1977-03-02T02:20:31.000Z")
5 },
6 {
7 name: 'Brad Cardenas',
8 birthdate: ISODate("1977-05-06T21:57:35.000Z")
9 }
10]

MongoDB Search는 쿼리 에 지정된 날짜와 일치하는 두 개의 문서를 반환합니다.

다음 쿼리는 in 연산자를 사용하여 계정 번호가 371138, 371139 또는 371140 인 고객에 대해 숫자 배열이 포함된 accounts 필드를 쿼리합니다. 쿼리는 $project 단계를 사용하여 다음을 수행합니다.

  • 결과에서 _id 필드를 생략합니다.

  • 결과에 nameaccounts 필드만 포함합니다.

1db.customers.aggregate([
2 {
3 "$search": {
4 "in": {
5 "path": "accounts",
6 "value": [371138, 371139, 371140]
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 0,
13 "name": 1,
14 "accounts": 1
15 }
16 }
17])
1[
2 {
3 name: 'Elizabeth Ray',
4 accounts: [ 371138, 324287, 276528, 332179, 422649, 387979 ]
5 }
6]

MongoDB Search는 쿼리 에 지정된 계정 번호 371138 와 일치하는 문서 하나만 반환합니다.

다음 쿼리는 text 연산자를 사용하여 name 필드에서 이름이 James 인 고객을 쿼리합니다. 쿼리는 _id 필드에 지정된 objectId와 연결된 고객에 대해 in 연산자를 사용하여 기본 설정을 지정합니다. 쿼리는 $limit 단계를 사용하여 출력을 5 결과로 제한하고 $project 단계를 사용하여 다음과 같이 제한합니다.

  • 결과에 _idname 필드만 포함합니다.

  • 결과에 score 이라는 필드를 추가합니다.

1db.customers.aggregate([
2 {
3 "$search": {
4 "compound": {
5 "must": [{
6 "in": {
7 "path": "name",
8 "value": ["james sanchez", "jennifer lawrence"]
9 }
10 }],
11 "should": [{
12 "in": {
13 "path": "_id",
14 "value": [ObjectId("5ca4bbcea2dd94ee58162a72"), ObjectId("5ca4bbcea2dd94ee58162a91")]
15 }
16 }]
17 }
18 }
19 },
20 {
21 "$limit": 5
22 },
23 {
24 "$project": {
25 "_id": 1,
26 "name": 1,
27 "score": { $meta: "searchScore" }
28 }
29 }
30])
1[
2 {
3 _id: ObjectId("5ca4bbcea2dd94ee58162a72"),
4 name: 'James Sanchez',
5 score: 2
6 },
7 {
8 _id: ObjectId("5ca4bbcea2dd94ee58162a71"),
9 name: 'Jennifer Lawrence',
10 score: 1
11 }
12]

MongoDB Search는 name 필드 에 James SanchezJennifer Lawrence 가 포함된 문서를 반환합니다. MongoDB Search는 name: 'James Sanchez' 가 포함된 문서 should 절에 지정된 ObjectId 와 일치하기 때문에 더 높은 점수를 줍니다.

다음 쿼리는 in 연산자를 사용하여 불리언 값이 포함된 active 필드에서 활성 상태인 고객을 검색합니다. 이 쿼리는 생일이 다음 버킷에 속하는 활성 고객 수를 반환합니다.

  • 1970-01-01, 이 버킷의 하한(포함됨)

  • 1980-01-01, 1970-01-01 버킷의 상한(제외됨) 및 이 버킷의 하한(포함됨)

  • 1990-01-01, 1980-01-01 버킷의 상한(제외됨) 및 이 버킷의 하한(포함됨)

  • 2000-01-01, 1990-01-01 버킷의 상한(제외됨)

1db.customers.aggregate([
2 {
3 "$searchMeta": {
4 "facet": {
5 "operator": {
6 "in": {
7 "path": "active",
8 "value": null
9 }
10 },
11 "facets": {
12 "birthdateFacet": {
13 "type": "date",
14 "path": "birthdate",
15 "boundaries": [ISODate("1970-01-01"), ISODate("1980-01-01"), ISODate("1990-01-01"), ISODate("2000-01-01")],
16 "default": "other"
17 }
18 }
19 }
20 }
21 }
22])
[
{
count: { lowerBound: Long('1') },
facet: {
birthdateFacet: {
buckets: [
{
_id: ISODate('1970-01-01T00:00:00.000Z'),
count: Long('1')
},
{
_id: ISODate('1980-01-01T00:00:00.000Z'),
count: Long('0')
},
{
_id: ISODate('1990-01-01T00:00:00.000Z'),
count: Long('0')
}
]
}
}
}
]

돌아가기

geoWithin

이 페이지의 내용