Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

배열 값과 일치하는 문서를 찾는 MongoDB $in 쿼리 사용법

MongoDB에서 특정 값들을 포함하는 배열 필드를 가진 문서를 찾으려면 $in 연산자를 사용하면 됩니다. $in은 지정한 배열 안의 값 중 하나라도 필드와 일치하면 해당 문서를 반환합니다.

1. 샘플 컬렉션 생성하기

먼저 demo511이라는 컬렉션을 만들고 문서를 삽입해 보겠습니다.

> db.demo511.insertOne({"ListOfProject":["Library Management System","Hospital Management System"]});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e88473a987b6e0e9d18f585")
}> db.demo511.insertOne({"ListOfProject":["Online Web Tracking","Library Management System"]});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e884751987b6e0e9d18f586")
}> db.demo511.insertOne({"ListOfProject":["Online Shopping Cart","Hospital Management System"]});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e884776987b6e0e9d18f587")
}

2. find()로 전체 문서 조회하기

find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.

> db.demo511.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e88473a987b6e0e9d18f585"), "ListOfProject" : [ "Library Management System", "Hospital Management System" ] }
{ "_id" : ObjectId("5e884751987b6e0e9d18f586"), "ListOfProject" : [ "Online Web Tracking", "Library Management System" ] }
{ "_id" : ObjectId("5e884776987b6e0e9d18f587"), "ListOfProject" : [ "Online Shopping Cart", "Hospital Management System" ] }

3. $in으로 일치하는 문서 찾기

이제 ListOfProject 배열에 "Hospital Management System" 또는 "Online Shopping Cart"가 포함된 문서만 조회하는 쿼리입니다.

> db.demo511.find({ "ListOfProject":{$in:["Hospital Management System","Online Shopping Cart"]}});

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5e88473a987b6e0e9d18f585"), "ListOfProject" : [ "Library Management System", "Hospital Management System" ] }
{ "_id" : ObjectId("5e884776987b6e0e9d18f587"), "ListOfProject" : [ "Online Shopping Cart", "Hospital Management System" ] }

결과 분석

출력 결과를 보면 첫 번째 문서는 "Hospital Management System"이 포함되어 있고, 세 번째 문서는 "Online Shopping Cart"와 "Hospital Management System" 두 값 모두 포함되어 있어 조회되었습니다. 반면 두 번째 문서는 조건에 해당하는 값이 없기 때문에 결과에서 제외된 것을 확인할 수 있습니다.

이처럼 MongoDB의 $in 연산자를 활용하면 배열 필드 내에서 여러 값을 한 번에 검색할 수 있어, 복잡한 조건 조회를 간단하게 처리할 수 있습니다.