문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

$eq

이 페이지의 내용

  • 호환성
  • 구문
  • 행동
  • 예제
$eq

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

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

  • MongoDB Atlas: 클라우드에서의 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>가 정규식인 경우 $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 배열이 지정된 배열과 정확히 같거나 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" }
]
← 비교 쿼리 연산자
$gt →

이 페이지의 내용