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}을 함께 추가해 주어야 합니다.