MongoDB에서 ObjectId 없이 컬렉션 문서 반환하기
MongoDB에서 find() 메서드로 문서를 조회하면 기본적으로 _id 필드(ObjectId)가 항상 함께 반환됩니다. 만약 ObjectId를 제외한 문서만 결과로 받고 싶다면, 쿼리의 두 번째 인자인 프로젝션(projection)에 _id: 0을 지정하면 됩니다.
1. 예제 컬렉션 생성
먼저 실습에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.
> db.returnDocumentWithoutObjectId.insertOne({"Name":"Carol","Age":25});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8ba6c78f00858fb12e8fa")
}
> db.returnDocumentWithoutObjectId.insertOne({"Name":"Sam","Age":21});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8ba6d78f00858fb12e8fb")
}
> db.returnDocumentWithoutObjectId.insertOne({"Name":"John","Age":23});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8ba6f78f00858fb12e8fc")
}2. find() 메서드로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션의 모든 문서를 조회할 수 있습니다.
> db.returnDocumentWithoutObjectId.find();
위 쿼리를 실행하면 다음과 같이 각 문서마다 _id 필드가 포함된 결과가 출력됩니다.
{ "_id" : ObjectId("5ce8ba6c78f00858fb12e8fa"), "Name" : "Carol", "Age" : 25 }
{ "_id" : ObjectId("5ce8ba6d78f00858fb12e8fb"), "Name" : "Sam", "Age" : 21 }
{ "_id" : ObjectId("5ce8ba6f78f00858fb12e8fc"), "Name" : "John", "Age" : 23 }3. 프로젝션으로 ObjectId 제외하기
이제 _id: 0 옵션을 사용하여 ObjectId 없이 컬렉션의 문서를 반환하는 쿼리를 살펴보겠습니다.
> db.returnDocumentWithoutObjectId.find({},{_id:0});실행 결과는 다음과 같습니다.
{ "Name" : "Carol", "Age" : 25 }
{ "Name" : "Sam", "Age" : 21 }
{ "Name" : "John", "Age" : 23 }정리
find() 메서드의 첫 번째 인자는 조건(query), 두 번째 인자는 프로젝션(projection)입니다. 빈 객체 {}를 조건으로 넣으면 모든 문서를 대상으로 하며, 프로젝션에서 _id: 0을 지정하면 해당 필드가 결과에서 제외됩니다. 참고로 MongoDB에서는 _id 필드만 유일하게 명시적으로 제외할 수 있으며, 나머지 필드들은 포함(1) 또는 제외(0) 방식 중 한 가지만 일관되게 사용해야 합니다.