$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" } ]