MongoDB에서 $eq 연산자로 배열 내 ID 일치시키기
$eq 연산자를 find() 메서드와 함께 사용하면 배열 필드 안에서 특정 ID를 일치시켜 해당 문서를 손쉽게 가져올 수 있습니다. $eq는 동등 조건(equality condition)을 지정하는 연산자로, 특정 필드의 값이 지정한 값과 정확히 일치하는 문서만 매칭합니다.
1단계: 샘플 데이터로 컬렉션 생성하기
먼저 문서를 포함한 컬렉션을 생성해 보겠습니다.
> db.demo426.insert({"Ids":["110","120","101"]});
WriteResult({ "nInserted" : 1 })
> db.demo426.insert({"Ids":["100","201","401"]});
WriteResult({ "nInserted" : 1 })
> db.demo426.insert({"Ids":["501","600","700"]});
WriteResult({ "nInserted" : 1 })2단계: 저장된 전체 문서 확인하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.
> db.demo426.find().pretty();
위 명령은 다음과 같은 결과를 출력합니다.
{
"_id" : ObjectId("5e75e50fbbc41e36cc3cae72"),
"Ids" : [
"110",
"120",
"101"
]
}
{
"_id" : ObjectId("5e75e51abbc41e36cc3cae73"),
"Ids" : [
"100",
"201",
"401"
]
}
{
"_id" : ObjectId("5e75e527bbc41e36cc3cae74"),
"Ids" : [
"501",
"600",
"700"
]
}3단계: $eq 연산자로 ID 일치시키기
다음은 MongoDB에서 $eq를 사용하여 배열 내 ID를 일치시키는 쿼리입니다.
> db.demo426.find({"Ids":{$eq:"501"}});위 쿼리는 다음과 같은 결과를 반환합니다.
{ "_id" : ObjectId("5e75e527bbc41e36cc3cae74"), "Ids" : [ "501", "600", "700" ] }이처럼 $eq 연산자를 활용하면 배열 필드에 특정 값이 포함된 문서를 간단하게 검색할 수 있습니다. 참고로 MongoDB에서는 $eq를 생략하고 {"Ids": "501"}처럼 값을 직접 지정해도 동일한 결과를 얻을 수 있으며, 두 방식 모두 배열 요소 중 하나라도 조건과 일치하면 해당 문서를 반환합니다.