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

MongoDB 조회 결과를 배열에 저장하는 방법 (toArray() 활용법)

MongoDB에서 find() 메서드의 조회 결과를 배열 형태로 저장하고 싶다면 toArray() 메서드를 사용하면 됩니다. 이 메서드는 커서(cursor)에 담긴 문서들을 자바스크립트 배열로 변환해 주기 때문에, 이후 배열처럼 자유롭게 다룰 수 있다는 장점이 있습니다.

기본 문법

var anyVariableName = db.yourCollectionName.find().toArray();

이제 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 컬렉션 생성 및 문서 삽입

먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입합니다.

> db.mongoDbResultInArrayDemo.insertOne({"CustomerName":"David Miller","CustomerAge":24,"isMarried":false});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd99bd5b50a6c6dd317ad92")
}
> db.mongoDbResultInArrayDemo.insertOne({"CustomerName":"Sam Williams","CustomerAge":46,"isMarried":true});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd99beab50a6c6dd317ad93")
}
> db.mongoDbResultInArrayDemo.insertOne({"CustomerName":"Carol Taylor","CustomerAge":23,"isMarried":false});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd99bf9b50a6c6dd317ad94")
}

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

find() 메서드와 pretty()를 함께 사용하면 컬렉션의 모든 문서를 보기 좋게 출력할 수 있습니다.

> db.mongoDbResultInArrayDemo.find().pretty();

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

{
   "_id" : ObjectId("5cd99bd5b50a6c6dd317ad92"),
   "CustomerName" : "David Miller",
   "CustomerAge" : 24,
   "isMarried" : false
}
{
   "_id" : ObjectId("5cd99beab50a6c6dd317ad93"),
   "CustomerName" : "Sam Williams",
   "CustomerAge" : 46,
   "isMarried" : true
}
{
   "_id" : ObjectId("5cd99bf9b50a6c6dd317ad94"),
   "CustomerName" : "Carol Taylor",
   "CustomerAge" : 23,
   "isMarried" : false
}

3단계: 조회 결과를 배열에 저장하기

이제 핵심 단계입니다. find() 뒤에 toArray()를 붙여 조회 결과를 변수에 배열 형태로 저장합니다.

> var mongoDbResultIntoArray = db.mongoDbResultInArrayArray.find().toArray();

4단계: 배열에 저장된 데이터 확인

저장된 변수를 그대로 호출하면 배열 안에 담긴 모든 문서를 확인할 수 있습니다.

> mongoDbResultIntoArray

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

[
   {
      "_id" : ObjectId("5cd99bd5b50a6c6dd317ad92"),
      "CustomerName" : "David Miller",
      "CustomerAge" : 24,
      "isMarried" : false
   },
   {
      "_id" : ObjectId("5cd99beab50a6c6dd317ad93"),
      "CustomerName" : "Sam Williams",
      "CustomerAge" : 46,
      "isMarried" : true
   },
   {
      "_id" : ObjectId("5cd99bf9b50a6c6dd317ad94"),
      "CustomerName" : "Carol Taylor",
      "CustomerAge" : 23,
      "isMarried" : false
   }
]

정리 및 참고 사항

toArray()는 커서가 가리키는 모든 문서를 한 번에 메모리에 로드하여 배열로 반환합니다. 따라서 소량의 데이터를 다룰 때는 매우 편리하지만, 대용량 컬렉션을 대상으로 사용하면 메모리 부담이 커질 수 있으니 주의해야 합니다.

배열로 변환된 결과는 일반 자바스크립트 배열이므로 length 속성으로 문서 개수를 세거나, forEach, map, filter 같은 배열 메서드를 활용해 추가 가공을 할 수 있다는 점도 기억해 두면 유용합니다.