MongoDB에서 기본 키(_id)를 제거하는 방법
MongoDB에서 기본 키 역할을 하는 _id 필드는 문서를 삽입할 때 별도로 지정하지 않아도 자동으로 생성됩니다. 하지만 조회 결과에서 이 필드를 제외하고 싶은 경우가 종종 있습니다. MongoDB에서 기본 키를 제거(제외)하려면 find() 메서드의 두 번째 인자인 프로젝션(projection)에서 _id 값을 0으로 설정하면 됩니다. 즉, 결과에서 제외하고 싶은 필드를 0으로 지정하는 방식입니다.
먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.
> db.demo471.insertOne({"ClientId":101,"ClientName":"Chris"});{
"acknowledged" : true,
"insertedId" : ObjectId("5e805711b0f3fa88e2279077")
}
> db.demo471.insertOne({"ClientId":102,"ClientName":"Bob"});{
"acknowledged" : true,
"insertedId" : ObjectId("5e80571db0f3fa88e2279078")
}
> db.demo471.insertOne({"ClientId":103,"ClientName":"David"});{
"acknowledged" : true,
"insertedId" : ObjectId("5e805724b0f3fa88e2279079")
}find() 메서드를 사용하여 컬렉션의 모든 문서를 조회해 보겠습니다.
> db.demo471.find();
위 명령을 실행하면 다음과 같이 _id 필드가 포함된 상태로 결과가 출력됩니다.
{ "_id" : ObjectId("5e805711b0f3fa88e2279077"), "ClientId" : 101, "ClientName" : "Chris" }
{ "_id" : ObjectId("5e80571db0f3fa88e2279078"), "ClientId" : 102, "ClientName" : "Bob" }
{ "_id" : ObjectId("5e805724b0f3fa88e2279079"), "ClientId" : 103, "ClientName" : "David" }기본 키를 제외하는 쿼리
다음은 MongoDB에서 기본 키(_id)를 제외하고 데이터를 조회하는 쿼리입니다. 여기서는 예제를 위해 ClientId 필드도 함께 제외했습니다.
> db.demo471.find({},{_id:0,ClientId:0});실행 결과 _id와 ClientId 필드가 모두 제외되고 ClientName 값만 출력되는 것을 확인할 수 있습니다.
{ "ClientName" : "Chris" }
{ "ClientName" : "Bob" }
{ "ClientName" : "David" }참고 사항
MongoDB의 프로젝션에서 _id 필드는 유일하게 기본적으로 항상 포함되며, 이를 제외하려면 반드시 명시적으로 0으로 설정해야 합니다. 또한 일반 필드의 경우 포함(1)과 제외(0)를 하나의 쿼리에서 혼합하여 사용할 수 없으므로, 필요한 필드만 지정하거나 제외할 필드만 지정하는 방식으로 일관되게 작성하는 것이 좋습니다.