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

MongoDB에서 특정 필드만 조회하는 방법 – findOne() 활용법

MongoDB에서 쿼리 결과로 특정 필드만 가져오고 싶다면 findOne() 메서드를 사용하면 됩니다. findOne()은 조건에 일치하는 첫 번째 문서 하나만 반환하며, 두 번째 인자인 프로젝션(projection)을 통해 원하는 필드만 선택적으로 출력할 수 있습니다.

기본 문법

db.yourCollectionName.findOne({"yourFieldName1":yourValue},{yourFieldName2:1});
  • 첫 번째 중괄호 {}: 검색 조건(쿼리 필터)을 지정합니다.
  • 두 번째 중괄호 {}: 프로젝션으로, 값이 1인 필드만 결과에 포함됩니다.

예제용 컬렉션 생성하기

먼저 실습에 사용할 컬렉션과 문서들을 만들어 보겠습니다.

> db.particularFieldDemo.insertOne({"EmployeeName":"John Smith","EmployeeAge":26,"EmployeeTechnology":"MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd9b4abb50a6c6dd317ada2")
}
> db.particularFieldDemo.insertOne({"EmployeeName":"Chris Brown","EmployeeAge":28,"EmployeeTechnology":"Java"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd9b4d2b50a6c6dd317ada3")
}
> db.particularFieldDemo.insertOne({"EmployeeName":"David Miller","EmployeeAge":30,"EmployeeTechnology":"MySQL"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd9b4e8b50a6c6dd317ada4")
}
> db.particularFieldDemo.insertOne({"EmployeeName":"John Doe","EmployeeAge":31,"EmployeeTechnology":"C++"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd9b527b50a6c6dd317ada5")
}

find()로 전체 문서 확인하기

find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.

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

위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

{
   "_id" : ObjectId("5cd9b4abb50a6c6dd317ada2"),
   "EmployeeName" : "John Smith",
   "EmployeeAge" : 26,
   "EmployeeTechnology" : "MongoDB"
}
{
   "_id" : ObjectId("5cd9b4d2b50a6c6dd317ada3"),
   "EmployeeName" : "Chris Brown",
   "EmployeeAge" : 28,
   "EmployeeTechnology" : "Java"
}
{
   "_id" : ObjectId("5cd9b4e8b50a6c6dd317ada4"),
   "EmployeeName" : "David Miller",
   "EmployeeAge" : 30,
   "EmployeeTechnology" : "MySQL"
}
{
   "_id" : ObjectId("5cd9b527b50a6c6dd317ada5"),
   "EmployeeName" : "John Doe",
   "EmployeeAge" : 31,
   "EmployeeTechnology" : "C++"
}

특정 필드만 조회하는 쿼리 실행하기

이제 EmployeeTechnology가 "Java"인 문서를 찾되, EmployeeName 필드만 결과로 반환해 보겠습니다.

> db.particularFieldDemo.findOne({"EmployeeTechnology":"Java"},{EmployeeName:1});

실행 결과는 다음과 같습니다.

{
   "_id" : ObjectId("5cd9b4d2b50a6c6dd317ada3"),
   "EmployeeName" : "Chris Brown"
}

참고 사항

출력 결과를 보면 지정하지 않은 _id 필드도 함께 반환된 것을 확인할 수 있습니다. 이는 MongoDB에서 _id가 기본적으로 항상 포함되기 때문입니다. 만약 _id를 제외하고 싶다면 프로젝션에서 {_id:0, EmployeeName:1}처럼 값을 0으로 설정하면 됩니다. 또한 여러 개의 일치하는 문서를 모두 조회하고 싶다면 findOne() 대신 find() 메서드에 동일한 프로젝션을 적용하면 됩니다.