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

MongoDB에서 키를 사용해 컬렉션의 자식(하위) 필드 조회하는 방법

MongoDB에서 키로 컬렉션의 자식 필드 조회하기

MongoDB에서 특정 키를 기준으로 컬렉션 내 문서의 자식(하위) 필드를 가져오려면 find() 메서드를 사용하면 됩니다. 먼저 예제용 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

> db.demo305.insertOne(
...   {
...      _id: 101,
...      FirstName : 'Chris',
...      details : {
...         "0":"102",
...         "1":"10001"
...      }
...   }
...);
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo305.insertOne(
...   {
...      _id: 102,
...      FirstName : 'David',
...      details : {
...         "0":"103",
...         "1":"10002"
...      }
...   }
...);
{ "acknowledged" : true, "insertedId" : 102 }

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.demo305.find();

위 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : 101, "FirstName" : "Chris", "details" : { "0" : "102", "1" : "10001" } }
{ "_id" : 102, "FirstName" : "David", "details" : { "0" : "103", "1" : "10002" } }

키를 지정해 자식 필드만 가져오는 쿼리

특정 키를 기준으로 MongoDB 컬렉션의 자식 필드만 조회하려면 find() 메서드의 두 번째 인자인 프로젝션(projection)을 활용하면 됩니다. 아래 예제는 _id가 102인 문서에서 details 객체의 "0" 키에 해당하는 값만 선택적으로 가져옵니다.

> db.demo305.find({_id:102},{'details.0':1});

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

{ "_id" : 102, "details" : { "0" : "103" } }

프로젝션에서 값 1은 해당 필드를 결과에 포함하겠다는 의미입니다. 참고로 _id 필드는 별도 설정 없이도 기본적으로 항상 함께 반환되며, 필요하다면 {_id: 0}으로 지정해 제외할 수 있습니다. 이처럼 점 표기법(dot notation)을 사용하면 중첩된 문서 구조 안에서 원하는 하위 필드만 효율적으로 추출할 수 있습니다.