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

MongoDB에서 _id(ObjectId)로 레코드를 찾는 방법

MongoDB에서 _id로 레코드 찾기

MongoDB에서 _id 필드를 기준으로 특정 레코드(문서)를 조회하려면 find() 메서드와 함께 ObjectId() 함수를 사용하면 됩니다. 기본 문법은 다음과 같습니다.

db.yourCollectionName.find({"_id":yourObjectId});

1. 예제용 컬렉션 생성

먼저 실습에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다. insertOne() 메서드를 호출하면 각 문서마다 고유한 ObjectId가 자동으로 생성되어 저장됩니다.

> db.findRecordByIdDemo.insertOne({"CustomerName":"Larry","CustomerAge":26});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9dc2c875e2eeda1d5c3671")
}
> db.findRecordByIdDemo.insertOne({"CustomerName":"Bob","CustomerAge":20});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9dc2d175e2eeda1d5c3672")
}
> db.findRecordByIdDemo.insertOne({"CustomerName":"Carol","CustomerAge":22});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9dc2d775e2eeda1d5c3673")
}
> db.findRecordByIdDemo.insertOne({"CustomerName":"David","CustomerAge":24});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9dc2e375e2eeda1d5c3674")
}

2. 전체 문서 확인하기

find() 메서드와 pretty()를 함께 사용하면 컬렉션에 저장된 모든 문서를 가독성 있게 출력할 수 있습니다.

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

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

{
    "_id" : ObjectId("5c9dc2c875e2eeda1d5c3671"),
    "CustomerName" : "Larry",
    "CustomerAge" : 26
}
{
    "_id" : ObjectId("5c9dc2d175e2eeda1d5c3672"),
    "CustomerName" : "Bob",
    "CustomerAge" : 20
}
{
    "_id" : ObjectId("5c9dc2d775e2eeda1d5c3673"),
    "CustomerName" : "Carol",
    "CustomerAge" : 22
}
{
    "_id" : ObjectId("5c9dc2e375e2eeda1d5c3674"),
    "CustomerName" : "David",
    "CustomerAge" : 24
}

3. _id로 특정 레코드 조회하기

이제 ObjectId() 함수 안에 원하는 _id 문자열을 넣어 특정 레코드만 조회해 보겠습니다.

> db.findRecordByIdDemo.find({"_id":ObjectId("5c9dc2d175e2eeda1d5c3672")}).pretty();

실행 결과, 조건에 일치하는 문서 하나(Bob의 정보)만 정확히 반환됩니다.

{
    "_id" : ObjectId("5c9dc2d175e2eeda1d5c3672"),
    "CustomerName" : "Bob",
    "CustomerAge" : 20
}

주의 사항

ObjectId로 문서를 조회할 때 반드시 ObjectId() 헬퍼 함수로 감싸야 합니다. 문자열 그대로 전달하면 데이터 타입이 일치하지 않아 아무 결과도 반환되지 않으니 유의하세요.