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

MongoDB에서 특정 데이터를 반환하는 방법: findOne() 함수 활용 가이드

MongoDB에서 특정 데이터나 값을 조회해야 할 때는 findOne() 메서드를 사용하면 됩니다. findOne()은 컬렉션에서 지정한 쿼리 조건을 만족하는 단 하나의 문서(document)만 반환하는 메서드입니다.

1. 테스트용 컬렉션 생성하기

먼저 실습에 사용할 컬렉션과 문서를 생성해 보겠습니다.

> db.demo473.insertOne(
... {
...    "_id" : new ObjectId(),
...    "Name" : "Chris",
...    "details" : {
...       "X-Coordinate" :10,
...       "Y-Coordinate" :15
...    }
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e805a07b0f3fa88e227907d")
}
> db.demo473.insertOne(
... {
...    "_id" : new ObjectId(),
...    "Name" : "Bob",
...    "details" : {
...       "X-Coordinate" :11,
...       "Y-Coordinate" :12
...    }
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e805a07b0f3fa88e227907e")
}

위 코드는 'Chris'와 'Bob'이라는 이름을 가진 두 개의 문서를 demo473 컬렉션에 삽입합니다. 각 문서에는 X좌표와 Y좌표 정보가 details 필드에 중첩되어 저장되어 있습니다.

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

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

> db.demo473.find();

위 명령을 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e805a07b0f3fa88e227907d"), "Name" : "Chris", "details" : { "X-Coordinate" : 10, "Y-Coordinate" : 15 } }
{ "_id" : ObjectId("5e805a07b0f3fa88e227907e"), "Name" : "Bob", "details" : { "X-Coordinate" : 11, "Y-Coordinate" : 12 } }

3. findOne()으로 특정 데이터 조회하기

이제 findOne() 메서드를 사용하여 특정 조건에 맞는 데이터를 반환하는 쿼리를 살펴보겠습니다. 여기서는 X좌표가 11인 문서를 조회해 보겠습니다.

> db.demo473.findOne({ 'details.X-Coordinate':11 })

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

{
   "_id" : ObjectId("5e805a07b0f3fa88e227907e"),
   "Name" : "Bob",
   "details" : {
      "X-Coordinate" : 11,
      "Y-Coordinate" : 12
   }
}

findOne()과 find()의 차이점

두 메서드의 핵심적인 차이는 다음과 같습니다.

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

따라서 단일 문서만 필요한 경우 findOne()을 사용하면 코드가 더 간결해지고 불필요한 커서 처리를 피할 수 있습니다. 특히 내부 필드(예: details.X-Coordinate)를 기준으로 조회할 때는 위 예제처럼 점 표기법(dot notation)을 활용하면 됩니다.