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

MongoDB에서 특정 값을 포함하는 배열이 있는 문서 찾기

MongoDB에서 특정 값을 포함하는 배열이 있는 문서 찾기

MongoDB에서는 find() 메서드를 사용하여 배열 필드에 특정 값이 포함된 문서를 아주 간단하게 조회할 수 있습니다. 기본 문법은 다음과 같습니다.

db.yourCollectionName.find({"yourArrayFieldName":"yourValue"},.......N).pretty();

위 문법을 제대로 이해하기 위해 실제로 컬렉션을 생성하고 문서를 삽입해 보겠습니다. 다음 쿼리를 사용하면 컬렉션에 문서를 추가할 수 있습니다.

>db.findSpecificValue.insertOne({"StudentId":1,"StudentName":"Larry","FavouriteSubject":["C","C++","Java"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c6e8996140577d89182b8d0")
}
>db.findSpecificValue.insertOne({"StudentId":2,"StudentName":"Larry","FavouriteSubject":["MongoDB","MySQL","SQL Server"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c6e89b1140577d89182b8d1")
}

find() 메서드를 사용해 컬렉션에 저장된 모든 문서를 화면에 출력해 보겠습니다. 실행 쿼리는 다음과 같습니다.

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

실행 결과는 아래와 같습니다.

{
    "_id" : ObjectId("5c6e8996140577d89182b8d0"),
    "StudentId" : 1,
    "StudentName" : "Larry",
    "FavouriteSubject" : [
        "C",
        "C++",
        "Java"
    ]
}
{
    "_id" : ObjectId("5c6e89b1140577d89182b8d1"),
    "StudentId" : 2,
    "StudentName" : "Larry",
    "FavouriteSubject" : [
        "MongoDB",
        "MySQL",
        "SQL Server"
    ]
}

이제 FavouriteSubject 배열에 "MongoDB"라는 특정 값이 포함된 문서를 찾는 쿼리를 실행해 보겠습니다.

> db.findSpecificValue.find({"FavouriteSubject":"MongoDB"}).pretty();

다음은 위 쿼리의 실행 결과입니다.

{
    "_id" : ObjectId("5c6e89b1140577d89182b8d1"),
    "StudentId" : 2,
    "StudentName" : "Larry",
    "FavouriteSubject" : [
        "MongoDB",
        "MySQL",
        "SQL Server"
    ]
}

핵심 정리

MongoDB에서 배열 필드를 검색할 때는 별도의 특수 연산자 없이 {"배열필드명": "값"} 형태의 조건만으로 충분합니다. MongoDB는 배열의 요소 중 하나라도 지정한 값과 일치하면 해당 문서를 결과에 포함시키기 때문에, 배열 데이터 검색이 매우 직관적입니다. 이 방식은 학생 관리 시스템처럼 한 문서에 여러 개의 태그나 카테고리를 저장한 경우 원하는 항목을 빠르게 필터링할 때 특히 유용합니다.