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

MongoDB에서 findOne()과 ObjectId로 특정 문서 조회하는 방법

MongoDB findOne()과 ObjectId로 특정 문서 조회하기

MongoDB에서 저장된 수많은 문서 중 딱 하나의 레코드만 가져오고 싶다면 findOne() 메서드에 ObjectId를 조건으로 전달하면 됩니다. 이 글에서는 실제 예제를 통해 컬렉션 생성부터 특정 문서 조회까지 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성 및 문서 삽입

먼저 컬렉션을 생성하고 문서를 삽입해 보겠습니다. insertOne() 메서드를 사용하면 문서를 하나씩 추가할 수 있습니다.

> db.findOneWorkingDemo.insertOne({"ClientId":1,"ClientName":"Larry","ClientAge":26});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd7c1716d78f205348bc64d")
}
> db.findOneWorkingDemo.insertOne({"ClientId":2,"ClientName":"Chris","ClientAge":28});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd7c17d6d78f205348bc64e")
}
> db.findOneWorkingDemo.insertOne({"ClientId":3,"ClientName":"Robert","ClientAge":34});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd7c1896d78f205348bc64f")
}

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

다음은 find() 메서드를 사용해 컬렉션에 저장된 모든 문서를 출력하는 쿼리입니다.

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

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{
   "_id" : ObjectId("5cd7c1716d78f205348bc64d"),
   "ClientId" : 1,
   "ClientName" : "Larry",
   "ClientAge" : 26
}
{
   "_id" : ObjectId("5cd7c17d6d78f205348bc64e"),
   "ClientId" : 2,
   "ClientName" : "Chris",
   "ClientAge" : 28
}
{
   "_id" : ObjectId("5cd7c1896d78f205348bc64f"),
   "ClientId" : 3,
   "ClientName" : "Robert",
   "ClientAge" : 34
}

3. findOne()에 ObjectId 적용하기

이제 _id 필드에 ObjectId를 지정하여 특정 문서 하나만 조회해 보겠습니다. 여기서 주의할 점은 ObjectId 값을 반드시 따옴표 없이 ObjectId() 함수로 감싸서 전달해야 한다는 것입니다. 문자열 그대로 넘기면 일치하는 문서를 찾지 못합니다.

> db.findOneWorkingDemo.findOne({"_id":ObjectId("5cd7c17d6d78f205348bc64e")});

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

{
   "_id" : ObjectId("5cd7c17d6d78f205348bc64e"),
   "ClientId" : 2,
   "ClientName" : "Chris",
   "ClientAge" : 28
}

위 결과에서 볼 수 있듯이 ClientId가 2인 Chris의 문서만 정확히 반환되었습니다. findOne()은 조건과 일치하는 첫 번째 문서 하나만 반환한다는 점에서, 여러 개의 결과를 가져오는 find()와 차이가 있습니다. 따라서 고유한 _id 값으로 조회할 때는 findOne()이 가장 효율적인 선택입니다.