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

MongoDB에서 ObjectId 없이 컬렉션 문서를 반환하는 방법

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) 방식 중 한 가지만 일관되게 사용해야 합니다.