MongoDB 객체에서 속성(attribute) 목록을 추출하려면 for 루프를 활용해 문서(document)의 키(key)와 값(value)을 하나씩 꺼내면 됩니다. 이번 글에서는 실제 예제를 통해 MongoDB 문서에 담긴 모든 필드 이름과 데이터 타입, 값을 확인하는 방법을 단계별로 살펴보겠습니다.
1. 샘플 컬렉션 생성하기
먼저 insertOne() 메서드를 사용해 문서가 포함된 컬렉션을 생성합니다.
> db.getAttributeListDemo.insertOne({"StudentId":101,"StudentName":"John","StudentAdmissionDate":new ISODate('2019-01-12'),"StudentSubjects":["MongoDB","Java","MySQL"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdfcc9ac184d684e3fa269")
}2. 저장된 문서 확인하기
find() 메서드와 pretty() 메서드를 함께 사용하면 컬렉션의 모든 문서를 보기 좋게 출력할 수 있습니다.
> db.getAttributeListDemo.find().pretty();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5cbdfcc9ac184d684e3fa269"),
"StudentId" : 101,
"StudentName" : "John",
"StudentAdmissionDate" : ISODate("2019-01-12T00:00:00Z"),
"StudentSubjects" : [
"MongoDB",
"Java",
"MySQL"
]
}3. for 루프로 속성 목록 추출하기
이제 findOne()으로 문서 하나를 가져온 뒤, JavaScript의 for...in 루프를 사용해 각 속성의 키 이름, 데이터 타입, 값을 순서대로 출력하는 쿼리를 작성해 보겠습니다.
> var myDocument = db.getAttributeListDemo.findOne();
> for (myKey in myDocument) {
... var originalValue = myDocument[myKey];
... print(myKey + "(" + typeof(originalValue) + "): " + originalValue) };실행 결과는 다음과 같습니다. 각 줄에는 속성명(데이터 타입): 값 형태로 정보가 표시됩니다.
_id(object): 5cbdfcc9ac184d684e3fa269 StudentId(number): 101 StudentName(string): John StudentAdmissionDate(object): Sat Jan 12 2019 05:30:00 GMT+0530 (India Standard Time) StudentSubjects(object): MongoDB,Java,MySQL
결과 해석
출력 결과를 보면 다음과 같은 정보를 한눈에 파악할 수 있습니다.
- _id: ObjectId 타입의 고유 식별자
- StudentId: number 타입의 학생 번호
- StudentName: string 타입의 학생 이름
- StudentAdmissionDate: Date 객체(ISODate) 타입의 입학 날짜
- StudentSubjects: 배열(array) 타입의 수강 과목 목록
이처럼 findOne()과 for...in 루프, 그리고 typeof 연산자를 조합하면 별도의 드라이버나 도구 없이도 MongoDB 셸에서 특정 문서의 전체 스키마 구조를 빠르게 확인할 수 있습니다. 동적으로 필드가 변하는 컬렉션의 구조를 점검할 때 특히 유용한 기법입니다.