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

MongoDB에서 db.collection.find()의 반환 유형은 무엇일까요?

db.collection.find()의 반환 유형

MongoDB에서 db.collection.find() 구문은 쿼리 결과 집합(result set)에 대한 커서(cursor)를 반환합니다. 즉, find()는 문서 자체를 직접 돌려주는 것이 아니라, 결과 집합을 가리키는 커서 객체를 반환하며, 이 커서를 통해 결과를 하나씩 순회(iterate)하거나 전체 문서를 출력할 수 있습니다.

커서 방식을 사용하는 이유는 대량의 데이터를 한 번에 메모리에 로드하지 않고 배치(batch) 단위로 효율적으로 처리하기 위함입니다. 기본적으로 셸에서는 처음 20개의 문서를 표시하고, 이후 it 명령으로 나머지를 계속 확인할 수 있습니다.

예제용 컬렉션 생성하기

먼저 문서를 포함하는 컬렉션을 생성해 보겠습니다.

> db.findCursorDemo.insertOne({"ClientFirstName":"John","ClientLastName":"Smith"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd00a1c588d4a6447b2e05c")
}
> db.findCursorDemo.insertOne({"ClientFirstName":"Carol","ClientLastName":"Taylor"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd00a26588d4a6447b2e05d")
}
> db.findCursorDemo.insertOne({"ClientFirstName":"David","ClientLastName":"Miller"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd00a33588d4a6447b2e05e")
}

위 명령을 실행하면 findCursorDemo 컬렉션에 세 개의 클라이언트 문서가 저장됩니다.

find() 메서드로 전체 문서 조회하기

다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 조회하는 쿼리입니다.

> db.findCursorDemo.find();

이 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : ObjectId("5cd00a1c588d4a6447b2e05c"), "ClientFirstName" : "John", "ClientLastName" : "Smith" }
{ "_id" : ObjectId("5cd00a26588d4a6447b2e05d"), "ClientFirstName" : "Carol", "ClientLastName" : "Taylor" }
{ "_id" : ObjectId("5cd00a33588d4a6447b2e05e"), "ClientFirstName" : "David", "ClientLastName" : "Miller" }

반환된 커서 활용하기

find()가 반환한 커서에는 다양한 메서드를 적용할 수 있습니다. 예를 들어 forEach()를 사용하면 각 문서에 대해 원하는 작업을 수행할 수 있습니다.

> var myCursor = db.findCursorDemo.find();
> myCursor.forEach(function(doc){
...    print(doc.ClientFirstName + " " + doc.ClientLastName);
... });
John Smith
Carol Taylor
David Miller

또한 hasNext()next() 메서드를 조합하면 커서를 직접 제어하면서 문서를 하나씩 처리할 수 있으며, toArray()를 사용하면 커서의 결과를 배열 형태로 변환할 수도 있습니다.

정리

db.collection.find()의 반환 유형은 커서(cursor)입니다. 이 커서는 쿼리 결과 집합에 대한 참조 역할을 하며, 순회, 필터링, 정렬 등 다양한 후속 작업의 출발점이 됩니다. MongoDB에서 데이터를 효율적으로 조회하고 처리하려면 커서의 동작 방식을 정확히 이해하는 것이 중요합니다.