MongoDB에서 printjson()으로 스크립트 결과 출력하기
MongoDB 셸에서 쿼리나 스크립트의 실행 결과를 보기 좋게 출력하려면 printjson() 함수를 사용하면 됩니다. 이 함수는 BSON 문서를 사람이 읽기 쉬운 JSON 형식으로 정렬해 화면에 출력해 주기 때문에, 디버깅이나 데이터 확인 작업에서 매우 유용합니다.
1단계: 샘플 컬렉션 생성하기
먼저 insertOne() 메서드를 사용해 문서가 담긴 컬렉션을 생성해 보겠습니다.
> db.printResultScriptDemo.insertOne({"StudentName":"John","StudentAge":21});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cf22c02b64a577be5a2bc0b")
}
> db.printResultScriptDemo.insertOne({"StudentName":"Carol","StudentAge":20});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cf22c09b64a577be5a2bc0c")
}
> db.printResultScriptDemo.insertOne({"StudentName":"David","StudentAge":19});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cf22c11b64a577be5a2bc0d")
}위 명령을 실행하면 printResultScriptDemo라는 이름의 컬렉션에 학생 정보 세 건이 순차적으로 저장됩니다.
2단계: find() 메서드로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션에 있는 모든 문서를 한 번에 확인할 수 있습니다.
> db.printResultScriptDemo.find();
위 쿼리는 다음과 같은 결과를 반환합니다.
{ "_id" : ObjectId("5cf22c02b64a577be5a2bc0b"), "StudentName" : "John", "StudentAge" : 21 }
{ "_id" : ObjectId("5cf22c09b64a577be5a2bc0c"), "StudentName" : "Carol", "StudentAge" : 20 }
{ "_id" : ObjectId("5cf22c11b64a577be5a2bc0d"), "StudentName" : "David", "StudentAge" : 19 }다만 이 방식은 문서가 한 줄로 길게 출력되어 필드가 많아질수록 가독성이 떨어집니다.
3단계: printjson()으로 스크립트 결과 예쁘게 출력하기
결과를 구조화된 형태로 출력하려면 커서(cursor)의 hasNext()와 next() 메서드를 반복문과 함께 사용하고, 각 문서를 printjson()으로 출력하면 됩니다.
> var document = db.printResultScriptDemo.find();
> while (document.hasNext()) {
printjson(document.next());
}
실행하면 다음과 같이 각 문서가 들여쓰기된 JSON 형식으로 깔끔하게 출력됩니다.
{
"_id" : ObjectId("5cf22c02b64a577be5a2bc0b"),
"StudentName" : "John",
"StudentAge" : 21
}
{
"_id" : ObjectId("5cf22c09b64a577be5a2bc0c"),
"StudentName" : "Carol",
"StudentAge" : 20
}
{
"_id" : ObjectId("5cf22c11b64a577be5a2bc0d"),
"StudentName" : "David",
"StudentAge" : 19
}정리
MongoDB에서 스크립트 결과를 출력할 때는 다음 두 가지 방식을 기억하면 됩니다.
- find()만 사용: 빠르게 결과를 확인할 수 있지만, 문서가 한 줄로 길게 출력되어 복잡한 데이터는 읽기 어렵습니다.
- while 루프 + printjson() 조합: 커서를 순회하며 각 문서를 정렬된 JSON 형식으로 출력하므로, 필드가 많은 문서도 한눈에 파악할 수 있습니다.
특히 자바스크립트 기반의 MongoDB 셸에서 반복 작업을 수행할 때 printjson()은 결과 검증과 디버깅에 없어서는 안 될 필수 도구입니다.