MongoDB에서 조건에 일치하는 문서 중 단 하나의 문서만 가져오고 싶다면 findOne() 메서드를 사용하면 됩니다. 이 메서드는 조건에 맞는 여러 문서가 존재하더라도 가장 먼저 발견된 첫 번째 문서만 반환합니다.
테스트용 컬렉션 생성하기
먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.
> db.demo116.insertOne({"EmployeeId":101,"EmployeeName":"John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e2eff98d8f64a552dae635b")
}
> db.demo116.insertOne({"EmployeeId":102,"EmployeeName":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e2eff9fd8f64a552dae635c")
}
> db.demo116.insertOne({"EmployeeId":103,"EmployeeName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e2effa5d8f64a552dae635d")
}
> db.demo116.insertOne({"EmployeeId":102,"EmployeeName":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e2effb7d8f64a552dae635e")
}위 예시에서 EmployeeId가 102인 문서가 두 개(Bob, Mike) 존재한다는 점에 주목하세요.
find()로 전체 문서 확인하기
find() 메서드를 사용하면 컬렉션의 모든 문서를 조회할 수 있습니다.
> db.demo116.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e2eff98d8f64a552dae635b"), "EmployeeId" : 101, "EmployeeName" : "John" }
{ "_id" : ObjectId("5e2eff9fd8f64a552dae635c"), "EmployeeId" : 102, "EmployeeName" : "Bob" }
{ "_id" : ObjectId("5e2effa5d8f64a552dae635d"), "EmployeeId" : 103, "EmployeeName" : "David" }
{ "_id" : ObjectId("5e2effb7d8f64a552dae635e"), "EmployeeId" : 102, "EmployeeName" : "Mike" }findOne()으로 단일 문서만 조회하기
이제 MongoDB에서 조건에 맞는 단일 문서만 조회하는 쿼리를 살펴보겠습니다.
> db.demo116.findOne({"EmployeeId":102});실행 결과는 다음과 같습니다.
{
"_id" : ObjectId("5e2eff9fd8f64a552dae635c"),
"EmployeeId" : 102,
"EmployeeName" : "Bob"
}핵심 정리
findOne()은 조건에 맞는 문서가 여러 개여도 첫 번째 문서 하나만 반환합니다.- 반환 결과는 배열이 아닌 단일 문서 객체 형태이므로, 애플리케이션 코드에서 별도의 인덱싱 없이 바로 필드에 접근할 수 있습니다.
- 조건에 맞는 문서가 없으면
null을 반환합니다. - 삽입 순서상 Bob이 Mike보다 먼저 저장되었기 때문에, EmployeeId가 102인 두 문서 중 Bob이 결과로 반환되었습니다.