Docs Menu
Docs Home
/ /

$eq

$eq

동일성 조건을 지정합니다. $eq 연산자는 필드 값이 지정된 값과 같은 문서를 일치시킵니다.

다음 환경에서 호스팅되는 배포에 $eq 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

  • MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전

$eq 연산자의 형식은 다음과 같습니다.

{ <field>: { $eq: <value> } }

$eq 연산자는 <value> 가 정규 표현식인 경우를 제외하고 { field: <value> } 형식과 동일합니다. 아래에서 예시를 참조하세요.

다양한 BSON types 값을 비교하려면 지정된 BSON 비교순서를 참조하십시오.

<value> 이 문서인 경우 문서 내 필드의 순서가 중요합니다.

<value> 가 배열인 경우, MongoDB는 <field> 가 배열과 정확히 일치하거나 <field> 에 배열과 정확히 일치하는 요소를 포함하는 문서를 매칭합니다. 요소의 순서가 중요합니다. 예시를 보려면 배열 값과 동일을 참조하세요.

{ field: <value> } 표현식은 <value>에서 일치하는 항목을 암시적으로 지정합니다. MongoDB는 암시적 일치를 보다 명시적인 형태로 변환합니다.

특정 문자열처럼 <value> 가 고정되면 표현식은 $eq 연산자 { field: { $eq: <value> } }를 사용하는 것과 같게 됩니다.

<value> 이 정규 표현식인 경우 MongoDB는 $regex 연산자 { field: { $regex: <value> } } 사용하도록 성명서를 확장합니다.

예시는 정규식 일치 동작을 참조하세요.

악의적으로 구성된 쿼리로 인한 문제를 방지하려면 항상 사용자 제공 입력과 함께 명시적인 { field: { $eq: <value> } } 형식을 사용하십시오.

이 예시에서는 inventory 컬렉션을 사용합니다.

db.inventory.insertMany( [
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] },
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
] )

이 예시에서는 inventory 컬렉션에서 qty 필드 값이 20인 모든 문서를 선택합니다.

db.inventory.find( { qty: { $eq: 20 } } )

해당 쿼리는 다음과 같습니다.

db.inventory.find( { qty: 20 } )

두 쿼리 모두 다음 문서와 일치합니다.

[
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
]

다음 예시에서는 inventory 컬렉션 내 item.name 필드 값이 "ab"와 같은 모든 문서를 선택합니다. 내장된 문서의 필드에 조건을 지정하려면 점 표기법을 사용합니다.

db.inventory.find( { "item.name": { $eq: "ab" } } )

해당 쿼리는 다음과 같습니다.

db.inventory.find( { "item.name": "ab" } )

두 쿼리 모두 다음 문서와 일치합니다.

[ { _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] } ]

다음 예시에서는 inventory 컬렉션에서 tags 배열에 값이 "B" 인 요소가 포함된 모든 문서를 선택합니다. [1]

db.inventory.find( { tags: { $eq: "B" } } )

해당 쿼리는 다음과 같습니다.

db.inventory.find( { tags: "B" } )

두 쿼리 모두 다음 문서와 일치합니다.

[
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] },
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
]
[1] 쿼리는 tags 필드의 값이 문자열 "B" 인 문서도 일치합니다.

이 예시는 inventory 컬렉션에서 tags 배열이 지정된 배열과 같거나 [ "A", "B" ] 배열과 동일한 요소를 포함하는 모든 문서를 선택합니다.

db.inventory.find( { tags: { $eq: [ "A", "B" ] } } )

해당 쿼리는 다음과 같습니다.

db.inventory.find( { tags: [ "A", "B" ] } )

두 쿼리 모두 다음 문서와 일치합니다.

[
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
]

다음 예시들은 암시적 정규 표현식 매칭과 명시적 정규 표현식 매칭의 차이점을 보여줍니다. 이러한 문서가 포함된 컬렉션을 생각해 보세요.

db.companies.insertMany( [
{ _id: 001, company: "MongoDB" },
{ _id: 002, company: "MongoDB2" }
] )
문자열에서 $eq 일치

문자열은 암시적 일치이든 $eq의 명시적 사용이든 동일한 값을 반환합니다. 다음 쿼리는 동일한 결과를 반환합니다.

db.collection.find( { company: "MongoDB" }, {_id: 0 })
db.collection.find( { company: { $eq: "MongoDB" } }, {_id: 0 } )

결과는 다음과 같습니다:

[ { company: "MongoDB" } ]
정규식의 $eq 일치

$eq 및 정규 표현식을 사용하는 명시적 쿼리는 정규 표현식이기도 한 객체와만 일치합니다. company 필드의 값이 문자열이기 때문에 예시 쿼리는 결과를 반환하지 않습니다.

db.companies.find( { company: { $eq: /MongoDB/ } }, {_id: 0 } )
정규 표현식 일치

정규 표현식과 암시적으로 일치하는 쿼리는 $regex 연산자를 사용하는 쿼리와 같습니다. 다음 쿼리는 동일한 결과를 반환합니다.

db.companies.find( { company: /MongoDB/ }, {_id: 0 })
db.companies.find( { company: { $regex: /MongoDB/ } }, {_id: 0 } )

결과는 다음과 같습니다.

[
{ company: "MongoDB" },
{ company: "MongoDB2" }
]

돌아가기

비교

이 페이지의 내용