MongoDB에서 객체를 키로 사용하여 값 조회하기
MongoDB에서 값을 조회하려면 find() 메서드를 사용하고, 중첩된 필드에 접근할 때는 점 표기법(dot notation)을 활용합니다. 이번 글에서는 내장 객체(임베디드 문서) 안의 값을 조회하는 방법을 실제 예제와 함께 단계별로 살펴보겠습니다.
1. 샘플 컬렉션 생성
먼저 insertOne() 메서드를 사용하여 문서가 포함된 컬렉션을 생성합니다. 각 문서는 details라는 객체 안에 이름(FirstName)과 성(LastName) 정보를 담고 있습니다.
> db.demo361.insertOne({"details":{"FirstName":"Chris","LastName":"Brown"}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e56a61f54a481fef8ec7a19")
}
> db.demo361.insertOne({"details":{"FirstName":"David","LastName":"Miller"}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e56a62854a481fef8ec7a1a")
}
> db.demo361.insertOne({"details":{"FirstName":"John","LastName":"Doe"}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e56a63654a481fef8ec7a1b")
}2. 전체 문서 확인하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.
> db.demo361.find();
위 명령을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
{ "_id" : ObjectId("5e56a61f54a481fef8ec7a19"), "details" : { "FirstName" : "Chris", "LastName" : "Brown" } }
{ "_id" : ObjectId("5e56a62854a481fef8ec7a1a"), "details" : { "FirstName" : "David", "LastName" : "Miller" } }
{ "_id" : ObjectId("5e56a63654a481fef8ec7a1b"), "details" : { "FirstName" : "John", "LastName" : "Doe" } }3. 점 표기법으로 특정 필드만 조회하기
다음은 객체를 키로 사용하여 원하는 값을 조회하는 쿼리입니다. find()의 두 번째 인자인 프로젝션(projection)에서 "details.LastName": 1로 지정하면, 내장 객체의 성(LastName) 필드만 선택적으로 반환됩니다.
> db.demo361.find({},{"details.LastName":1});실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e56a61f54a481fef8ec7a19"), "details" : { "LastName" : "Brown" } }
{ "_id" : ObjectId("5e56a62854a481fef8ec7a1a"), "details" : { "LastName" : "Miller" } }
{ "_id" : ObjectId("5e56a63654a481fef8ec7a1b"), "details" : { "LastName" : "Doe" } }이처럼 MongoDB에서는 점 표기법을 통해 중첩된 객체의 하위 필드에 손쉽게 접근할 수 있으며, 프로젝션을 함께 활용하면 필요한 데이터만 효율적으로 가져올 수 있습니다. 이는 대량의 문서를 다룰 때 네트워크 부하를 줄이고 쿼리 성능을 높이는 데 큰 도움이 됩니다.