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

MongoDB에서 ObjectId로 문서를 조회하는 방법

MongoDB에서 ObjectId로 문서 찾기

MongoDB에서 특정 ObjectId를 가진 문서를 조회하려면 find() 메서드와 함께 ObjectId() 함수를 사용하면 됩니다. 기본적인 쿼리 구문은 다음과 같습니다.

db.yourCollectionName.find({"_id":ObjectId("yourObjectIdValue")}).pretty();

위 구문이 실제로 어떻게 동작하는지 이해하기 위해, 먼저 샘플 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

1. 샘플 컬렉션 생성 및 데이터 삽입

다음 쿼리를 사용하여 컬렉션에 문서를 하나씩 삽입합니다.

> db.findDocumentWithObjectIdDemo.insertOne({"UserName":"Larry"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c90e4384afe5c1d2279d69b")
}
> db.findDocumentWithObjectIdDemo.insertOne({"UserName":"Mike","UserAge":23});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c90e4444afe5c1d2279d69c")
}

> db.findDocumentWithObjectIdDemo.insertOne({"UserName":"Carol","UserAge":26,"UserHobby":["Learning","Photography"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c90e4704afe5c1d2279d69d")
}

각 문서가 삽입될 때마다 MongoDB가 자동으로 고유한 _id(ObjectId) 값을 생성하여 할당하는 것을 확인할 수 있습니다.

2. 전체 문서 확인

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

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

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

{ "_id" : ObjectId("5c90e4384afe5c1d2279d69b"), "UserName" : "Larry" }
{
    "_id" : ObjectId("5c90e4444afe5c1d2279d69c"),
    "UserName" : "Mike",
    "UserAge" : 23
}
{
    "_id" : ObjectId("5c90e4704afe5c1d2279d69d"),
    "UserName" : "Carol",
    "UserAge" : 26,
    "UserHobby" : [
        "Learning",
        "Photography"
    ]
}

3. ObjectId로 특정 문서 조회

Case 1 − 첫 번째 예시입니다. ObjectId를 조건으로 지정하여 해당 문서를 조회하는 쿼리입니다.

> db.findDocumentWithObjectIdDemo.find({"_id":ObjectId("5c90e4704afe5c1d2279d69d")}).pretty();

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

{
    "_id" : ObjectId("5c90e4704afe5c1d2279d69d"),
    "UserName" : "Carol",
    "UserAge" : 26,
    "UserHobby" : [
        "Learning",
        "Photography"
    ]
}

Case 2 − 두 번째 예시입니다. 다른 ObjectId 값을 사용하여 또 다른 문서를 조회해 보겠습니다.

> db.findDocumentWithObjectIdDemo.find({"_id": ObjectId("5c90e4444afe5c1d2279d69c")}).pretty();

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

{
    "_id" : ObjectId("5c90e4444afe5c1d2279d69c"),
    "UserName" : "Mike",
    "UserAge" : 23
}

참고 사항

ObjectId로 문서를 조회할 때는 반드시 문자열이 아닌 ObjectId() 함수로 감싸야 합니다. 만약 {"_id": "5c90e4444afe5c1d2279d69c"}처럼 문자열 그대로 전달하면 타입이 일치하지 않아 아무런 결과도 반환되지 않습니다. 또한 .pretty() 메서드는 조회 결과를 보기 좋게 정렬된 형태로 출력해 주므로, 개발 및 디버깅 시 유용하게 활용할 수 있습니다.