MongoDB에서 특정 조건을 만족하는 문서 중 단 하나만 조회하고 싶다면 findOne() 메서드를 사용하면 됩니다. findOne()은 컬렉션에서 지정된 쿼리 조건을 만족하는 문서를 찾아 그중 첫 번째 문서 하나만 반환합니다.
테스트용 컬렉션 생성하기
먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.
> db.demo596.insertOne({_id:1,"FirstName":"John","LastName":"Smith"});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo596.insertOne({_id:2,"FirstName":"John","LastName":"Doe"});
{ "acknowledged" : true, "insertedId" : 2 }
> db.demo596.insertOne({_id:3,"FirstName":"Chris","LastName":"Brown"});
{ "acknowledged" : true, "insertedId" : 3 }
> db.demo596.insertOne({_id:4,"FirstName":"David","LastName":"Miller"});
{ "acknowledged" : true, "insertedId" : 4 }find()로 전체 문서 확인하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 한눈에 확인할 수 있습니다.
> db.demo596.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : 1, "FirstName" : "John", "LastName" : "Smith" }
{ "_id" : 2, "FirstName" : "John", "LastName" : "Doe" }
{ "_id" : 3, "FirstName" : "Chris", "LastName" : "Brown" }
{ "_id" : 4, "FirstName" : "David", "LastName" : "Miller" }findOne()으로 단일 문서만 조회하기
이제 조건에 맞는 단일 문서만 가져오는 쿼리를 살펴보겠습니다.
> db.demo596.findOne({"FirstName":"John"});실행 결과는 다음과 같습니다.
{ "_id" : 1, "FirstName" : "John", "LastName" : "Smith" }findOne() 사용 시 주의할 점
예제에서 FirstName이 "John"인 문서는 두 개(_id 1과 _id 2)가 존재하지만, 결과에는 첫 번째로 일치한 문서 하나만 반환되었습니다. 이처럼 findOne()은 조건을 만족하는 문서가 여러 개라도 항상 하나의 문서만 반환한다는 점을 기억해야 합니다. 반대로 조건에 맞는 모든 문서를 조회하려면 find() 메서드를 사용하는 것이 올바른 선택입니다.