MongoDB $eq 연산자의 대안
MongoDB에서 동등(equality) 조건을 표현할 때 굳이 $eq 연산자를 명시적으로 사용하지 않아도 됩니다. find() 메서드에 일치시킬 값을 직접 전달하기만 하면, MongoDB가 내부적으로 자동으로 동등 비교를 수행하여 동일한 결과를 반환합니다.
실제 예제를 통해 확인해 보겠습니다. 먼저 문서가 포함된 컬렉션을 생성합니다.
1. 컬렉션 생성 및 문서 삽입
> db.demo145.insertOne({"ListOfNames":["Chris","David","Mike"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e32f37bfdf09dd6d08539bb")
}
> db.demo145.insertOne({"ListOfNames":["Bob","John"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e32f384fdf09dd6d08539bc")
}2. 컬렉션의 모든 문서 조회
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo145.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e32f37bfdf09dd6d08539bb"), "ListOfNames" : [ "Chris", "David", "Mike" ] }
{ "_id" : ObjectId("5e32f384fdf09dd6d08539bc"), "ListOfNames" : [ "Bob", "John" ] }3. $eq 연산자를 대체하는 쿼리
다음은 $eq 연산자와 동일한 기능을 수행하는 쿼리입니다. 필드 이름 뒤에 일치시킬 값만 지정하면 됩니다.
> db.demo145.find({"ListOfNames":"John"});실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e32f384fdf09dd6d08539bc"), "ListOfNames" : [ "Bob", "John" ] }이처럼 배열 필드에 특정 값을 직접 지정하면 해당 값이 배열 안에 포함되어 있는지 자동으로 검사하므로, $eq 연산자를 사용한 것과 완전히 동일한 결과를 얻을 수 있습니다. 코드가 더 간결해진다는 장점도 있습니다.