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

MongoDB에서 _id 속성 하나만 반환하는 방법 완벽 가이드

MongoDB에서 _id 필드만 조회하는 방법

MongoDB에서 컬렉션의 문서들을 조회할 때 _id 속성 하나만 반환받고 싶다면, find() 메서드에 두 번째 인자로 프로젝션(projection)을 지정하면 됩니다.

기본 문법

단일 속성인 _id만 반환하는 기본 문법은 다음과 같습니다.

db.yourCollectionName.find({}, {"_id": 1}).pretty();

여기서 첫 번째 중괄호 {}는 조회 조건(필터)이며 비워두면 모든 문서를 대상으로 합니다. 두 번째 객체에서 "_id": 1은 _id 필드만 포함하겠다는 의미입니다.

예제용 컬렉션 생성

먼저 테스트에 사용할 문서들이 담긴 컬렉션을 생성해 보겠습니다.

> db.singlePropertyIdDemo.insertOne({"_id":101,"UserName":"Larry","UserAge":21});
{ "acknowledged" : true, "insertedId" : 101 }
> db.singlePropertyIdDemo.insertOne({"_id":102,"UserName":"Mike","UserAge":26});
{ "acknowledged" : true, "insertedId" : 102 }
> db.singlePropertyIdDemo.insertOne({"_id":103,"UserName":"Chris","UserAge":24});
{ "acknowledged" : true, "insertedId" : 103 }
> db.singlePropertyIdDemo.insertOne({"_id":104,"UserName":"Robert","UserAge":23});
{ "acknowledged" : true, "insertedId" : 104 }
> db.singlePropertyIdDemo.insertOne({"_id":105,"UserName":"John","UserAge":27});
{ "acknowledged" : true, "insertedId" : 105 }

전체 문서 조회하기

find() 메서드를 사용해 컬렉션의 모든 문서를 출력하는 쿼리는 다음과 같습니다.

> db.singlePropertyIdDemo.find().pretty();

위 쿼리를 실행하면 다음과 같이 모든 필드가 포함된 결과가 출력됩니다.

{ "_id" : 101, "UserName" : "Larry", "UserAge" : 21 }
{ "_id" : 102, "UserName" : "Mike", "UserAge" : 26 }
{ "_id" : 103, "UserName" : "Chris", "UserAge" : 24 }
{ "_id" : 104, "UserName" : "Robert", "UserAge" : 23 }
{ "_id" : 105, "UserName" : "John", "UserAge" : 27 }

_id 속성만 반환하기

이제 프로젝션을 적용하여 _id 속성만 반환하는 쿼리는 다음과 같습니다.

> db.singlePropertyIdDemo.find({}, {"_id": 1}).pretty();

실행 결과는 다음과 같이 _id 값만 깔끔하게 출력됩니다.

{ "_id" : 101 }
{ "_id" : 102 }
{ "_id" : 103 }
{ "_id" : 104 }
{ "_id" : 105 }

참고 사항

MongoDB에서는 별도로 설정하지 않아도 _id 필드는 항상 기본적으로 반환됩니다. 따라서 다른 필드들만 제외하고 싶다면 {"UserName": 0, "UserAge": 0}처럼 제외할 필드에 0을 지정하는 방식도 가능합니다. 반대로 특정 필드만 명시적으로 포함하려면 해당 필드에 1을 지정하면 되는데, 이 경우 _id를 제외하고 싶다면 {"_id": 0}을 함께 추가해 주어야 합니다.