MongoDB 컬렉션에서 첫 번째 문서 검색하기
MongoDB에서 컬렉션(collection)에 저장된 첫 번째 문서를 조회하고 싶다면 findOne() 메서드를 사용하면 됩니다. findOne()은 조건과 일치하는 문서 중 가장 먼저 발견된 하나의 문서만 반환하며, 조건을 지정하지 않으면 컬렉션의 첫 번째 문서를 그대로 가져옵니다.
기본 문법
var anyVariableName = db.yourCollectionName.findOne();
// MongoDB 콘솔에 결과를 출력하려면 변수 이름을 입력합니다.
yourVariableName
예제용 컬렉션 생성
먼저 실습에 사용할 컬렉션을 만들고 문서를 여러 개 삽입해 보겠습니다. 아래 예제에서는 클라이언트 정보를 담은 retrieveFirstDocumentDemo 컬렉션을 사용합니다.
> db.retrieveFirstDocumentDemo.insertOne({"ClientName":"Robert","ClientAge":23});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2325966324ffac2a7dc6d")
}
> db.retrieveFirstDocumentDemo.insertOne({"ClientName":"Chris","ClientAge":26});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2326266324ffac2a7dc6e")
}
> db.retrieveFirstDocumentDemo.insertOne({"ClientName":"Larry","ClientAge":29});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2326a66324ffac2a7dc6f")
}
> db.retrieveFirstDocumentDemo.insertOne({"ClientName":"David","ClientAge":39});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2327566324ffac2a7dc70")
}find()로 전체 문서 확인하기
문서가 정상적으로 삽입되었는지 확인하기 위해 find() 메서드로 컬렉션의 모든 문서를 조회해 보겠습니다.
> db.retrieveFirstDocumentDemo.find().pretty();
위 쿼리를 실행하면 다음과 같이 네 개의 문서가 모두 출력됩니다.
{
"_id" : ObjectId("5ca2325966324ffac2a7dc6d"),
"ClientName" : "Robert",
"ClientAge" : 23
}
{
"_id" : ObjectId("5ca2326266324ffac2a7dc6e"),
"ClientName" : "Chris",
"ClientAge" : 26
}
{
"_id" : ObjectId("5ca2326a66324ffac2a7dc6f"),
"ClientName" : "Larry",
"ClientAge" : 29
}
{
"_id" : ObjectId("5ca2327566324ffac2a7dc70"),
"ClientName" : "David",
"ClientAge" : 39
}findOne()으로 첫 번째 문서만 검색하기
이제 findOne() 메서드를 사용해 컬렉션의 첫 번째 문서만 조회해 보겠습니다. 결과를 변수에 담아두면 나중에 재사용할 수도 있습니다.
> var firstDocumentOnly = db.retrieveFirstDocumentDemo.findOne();
> firstDocumentOnly;
실행 결과는 다음과 같습니다. 전체 문서 중 가장 앞에 있는 Robert의 문서 하나만 반환된 것을 확인할 수 있습니다.
{
"_id" : ObjectId("5ca2325966324ffac2a7dc6d"),
"ClientName" : "Robert",
"ClientAge" : 23
}정리
컬렉션의 첫 번째 문서를 가져오는 가장 간단한 방법은 조건 없이 findOne()을 호출하는 것입니다. 참고로 findOne()은 항상 단일 문서(또는 일치하는 문서가 없을 경우 null)를 반환하며, find()처럼 커서(cursor)를 반환하지 않기 때문에 별도의 반복 처리 없이 바로 값을 사용할 수 있다는 장점이 있습니다.