MongoDB에서 컬렉션에 저장된 모든 항목(문서)을 조회하려면 find() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 문서 삽입부터 전체 조회, 그리고 특정 필드만 선택적으로 가져오는 방법까지 단계별로 살펴보겠습니다.
1. 테스트용 컬렉션 생성하기
먼저 insertOne() 메서드를 사용해 문서가 포함된 컬렉션을 생성합니다.
> db.queryAllItemsDemo.insertOne({"StudentDetails":{"StudentName":"John","StudentSubject":["MongoDB","MySQL"],"StudentSubjectPrice":[4000,6000]},"OtherDetails":{"UserAge":29,"UserCountryName":"US"}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cef74ecef71edecf6a1f69f")
}위 명령은 학생 정보(StudentDetails)와 기타 정보(OtherDetails)를 담은 중첩 구조의 문서 하나를 queryAllItemsDemo 컬렉션에 성공적으로 삽입했습니다.
2. find()로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션의 모든 문서를 한 번에 확인할 수 있습니다. 여기에 pretty()를 붙이면 결과가 보기 좋게 정렬되어 출력됩니다.
> db.queryAllItemsDemo.find().pretty();
실행 결과
{
"_id" : ObjectId("5cef74ecef71edecf6a1f69f"),
"StudentDetails" : {
"StudentName" : "John",
"StudentSubject" : [
"MongoDB",
"MySQL"
],
"StudentSubjectPrice" : [
4000,
6000
]
},
"OtherDetails" : {
"UserAge" : 29,
"UserCountryName" : "US"
}
}조건 없이 find()를 호출하면 컬렉션 내 모든 문서와 모든 필드가 반환되는 것을 확인할 수 있습니다.
3. 프로젝션으로 특정 필드만 조회하기
전체 데이터가 아니라 원하는 필드만 가져오고 싶다면 find()의 두 번째 인자에 프로젝션(projection)을 지정하면 됩니다. 아래 예제는 StudentDetails 필드만 선택하여 조회하는 방법입니다.
> db.queryAllItemsDemo.find({},{StudentDetails: 1}).pretty();실행 결과
{
"_id" : ObjectId("5cef74ecef71edecf6a1f69f"),
"StudentDetails" : {
"StudentName" : "John",
"StudentSubject" : [
"MongoDB",
"MySQL"
],
"StudentSubjectPrice" : [
4000,
6000
]
}
}결과를 보면 _id와 지정한 StudentDetails 필드만 반환된 것을 알 수 있습니다. 참고로 MongoDB에서는 별도로 제외하지 않는 한 _id 필드가 항상 기본으로 포함됩니다. 만약 _id도 제외하고 싶다면 {_id: 0, StudentDetails: 1}처럼 프로젝션을 작성하면 됩니다.
정리
- 전체 문서 조회: 조건 없이
db.컬렉션명.find()를 실행합니다. - 보기 좋은 출력:
.pretty()를 추가하면 들여쓰기된 형태로 결과가 표시됩니다. - 특정 필드만 조회: 두 번째 인자에 프로젝션 객체를 넣어 원하는 필드를 선택합니다.
이처럼 find() 메서드 하나만으로도 MongoDB에서 간단한 전체 조회부터 필드 단위의 세밀한 조회까지 손쉽게 처리할 수 있습니다.