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

MongoDB 컬렉션에서 데이터 검색하기 – findOne() 메서드 완벽 가이드

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

MongoDB에서 컬렉션(collection)으로부터 단일 문서(single document)를 반환하려면 findOne() 메서드를 사용합니다. 이 메서드는 조건에 일치하는 첫 번째 문서만을 반환한다는 점이 특징입니다.

먼저 실습을 위해 문서(document)가 포함된 컬렉션을 생성해 보겠습니다.

1단계: 샘플 컬렉션 생성

> db.demo463.insertOne({"StudentName":"Chris Brown","StudentAge":21,"StudentCountryName":"US"});{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e7f7ec8cb66ccba22cc9dcf")
}
> db.demo463.insertOne({"StudentName":"David Miller","StudentAge":23,"StudentCountryName":"UK"});{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e7f7ed5cb66ccba22cc9dd0")
}
> db.demo463.insertOne({"StudentName":"John Doe","StudentAge":22,"StudentCountryName":"AUS"});{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e7f7ee1cb66ccba22cc9dd1")
}
> db.demo463.insertOne({"StudentName":"John Smith","StudentAge":24,"StudentCountryName":"US"});{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e7f7eefcb66ccba22cc9dd2")
}

위 명령은 학생 이름(StudentName), 나이(StudentAge), 국가(StudentCountryName) 정보를 담은 네 개의 문서를 demo463 컬렉션에 순차적으로 삽입합니다.

2단계: find()로 전체 문서 확인

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

> db.demo463.find();

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

{ "_id" : ObjectId("5e7f7ec8cb66ccba22cc9dcf"), "StudentName" : "Chris Brown",
"StudentAge" : 21, "StudentCountryName" : "US" }
{ "_id" : ObjectId("5e7f7ed5cb66ccba22cc9dd0"), "StudentName" : "David Miller",
"StudentAge" : 23, "StudentCountryName" : "UK" }
{ "_id" : ObjectId("5e7f7ee1cb66ccba22cc9dd1"), "StudentName" : "John Doe", "StudentAge" :
22, "StudentCountryName" : "AUS" }
{ "_id" : ObjectId("5e7f7eefcb66ccba22cc9dd2"), "StudentName" : "John Smith", "StudentAge"
: 24, "StudentCountryName" : "US" }

3단계: findOne()으로 특정 문서 검색

이제 MongoDB 컬렉션에서 원하는 데이터를 검색하는 쿼리를 살펴보겠습니다. 아래 예제는 학생 이름이 "John Doe"인 문서 하나를 조회합니다.

> db.demo463.findOne({"StudentName":"John Doe"});

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

{
    "_id" : ObjectId("5e7f7ee1cb66ccba22cc9dd1"),
    "StudentName" : "John Doe",
    "StudentAge" : 22,
    "StudentCountryName" : "AUS"
}

find()와 findOne()의 차이점

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

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

따라서 특정 조건에 맞는 단일 레코드를 빠르게 확인할 때는 findOne()이 더 효율적이며, 전체 목록을 탐색할 때는 find()를 사용하는 것이 적합합니다.