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

MongoDB findOne() 메서드 사용법 – 조건에 맞는 단일 문서 조회하기

MongoDB의 findOne() 메서드는 검색 조건과 일치하는 문서가 여러 개 존재하더라도 단 하나의 문서만 반환합니다. 반면 find() 메서드는 조건에 일치하는 모든 문서를 반환한다는 점에서 큰 차이가 있습니다. 이번 글에서는 실제 예제를 통해 findOne()의 동작 방식을 단계별로 살펴보겠습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 demo230이라는 컬렉션을 만들고 여러 개의 문서를 삽입해 보겠습니다. insertOne() 메서드를 사용하면 문서를 하나씩 추가할 수 있습니다.

> db.demo230.insertOne({"FirstName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3fc4d2f4cebbeaebec513e")
}
> db.demo230.insertOne({"FirstName":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3fc4d5f4cebbeaebec513f")
}
> db.demo230.insertOne({"FirstName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3fc4dbf4cebbeaebec5140")
}
> db.demo230.insertOne({"FirstName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3fc4dff4cebbeaebec5141")
}
> db.demo230.insertOne({"FirstName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3fc4e1f4cebbeaebec5142")
}

위 명령을 실행하면 총 5개의 문서가 저장되며, 그중 "David"라는 이름을 가진 문서는 두 개입니다.

2. find()로 전체 문서 확인하기

삽입된 문서를 확인하기 위해 find() 메서드로 컬렉션의 모든 문서를 조회해 보겠습니다.

> db.demo230.find();

위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

{ "_id" : ObjectId("5e3fc4d2f4cebbeaebec513e"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e3fc4d5f4cebbeaebec513f"), "FirstName" : "Bob" }
{ "_id" : ObjectId("5e3fc4dbf4cebbeaebec5140"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e3fc4dff4cebbeaebec5141"), "FirstName" : "David" }
{ "_id" : ObjectId("5e3fc4e1f4cebbeaebec5142"), "FirstName" : "David" }

3. findOne()으로 단일 문서 조회하기

이제 findOne() 메서드를 사용하여 FirstName이 "David"인 문서를 조회해 보겠습니다.

> db.demo230.findOne({"FirstName":"David"});

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

{ "_id" : ObjectId("5e3fc4dff4cebbeaebec5141"), "FirstName" : "David" }

핵심 정리

컬렉션에는 "FirstName"이 "David"인 문서가 두 개 존재하지만, 출력 결과를 보면 오직 하나의 문서만 반환된 것을 확인할 수 있습니다. 이것이 바로 findOne()의 핵심 특징입니다.

  • findOne(): 조건에 일치하는 첫 번째 문서 하나만 반환합니다. 조건과 일치하는 문서가 없으면 null을 반환합니다.
  • find(): 조건에 일치하는 모든 문서를 커서(cursor) 형태로 반환합니다.

따라서 특정 조건의 문서가 유일하다는 것을 알고 있거나, 여러 개 중 아무거나 하나만 필요한 경우 findOne()을 사용하면 효율적입니다. 반환되는 문서는 기본적으로 삽입 순서(자연 순서) 기준으로 가장 먼저 발견된 문서입니다.