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

MongoDB에서 배열 요소를 쿼리하는 방법

MongoDB에서 배열 요소 쿼리하기

MongoDB는 배열 필드에 저장된 데이터를 다룰 때 특히 강력한 성능을 발휘합니다. 배열 요소를 쿼리하려면 다음과 같은 기본 문법을 사용하면 됩니다.

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

위 문법은 배열 필드 안에 지정한 값("yourValue")이 포함된 모든 도큐먼트를 반환합니다.

예제 컬렉션 생성하기

개념을 이해하기 위해 먼저 도큐먼트가 포함된 컬렉션을 생성해 보겠습니다. 아래 쿼리를 사용하면 됩니다.

> db.queryArrayElementsDemo.insertOne({
    "StudentName":"John","StudentFavouriteSubject":["C","Java"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c90c0354afe5c1d2279d694")
}
> db.queryArrayElementsDemo.insertOne({ "StudentName":"Carol","StudentFavouriteSubject":["C","C++"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c90c0434afe5c1d2279d695")
}
> db.queryArrayElementsDemo.insertOne({ "StudentName":"David","StudentFavouriteSubject":["MongoDB","Java"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c90c0584afe5c1d2279d696")
}

저장된 전체 도큐먼트 확인하기

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

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

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

{
    "_id" : ObjectId("5c90c0354afe5c1d2279d694"),
    "StudentName" : "John",
    "StudentFavouriteSubject" : [
        "C",
        "Java"
    ]
}
{
    "_id" : ObjectId("5c90c0434afe5c1d2279d695"),
    "StudentName" : "Carol",
    "StudentFavouriteSubject" : [
        "C",
        "C++"
    ]
}
{
    "_id" : ObjectId("5c90c0584afe5c1d2279d696"),
    "StudentName" : "David",
    "StudentFavouriteSubject" : [
        "MongoDB",
        "Java"
    ]
}

배열 요소 조건으로 쿼리 실행하기

이제 특정 값이 배열에 포함되어 있는지 조건으로 검색해 보겠습니다. 예를 들어, 좋아하는 과목 목록에 "Java"가 포함된 학생만 조회하려면 다음과 같이 작성합니다.

> db.queryArrayElementsDemo.find({StudentFavouriteSubject:"Java"}).pretty();

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

{
    "_id" : ObjectId("5c90c0354afe5c1d2279d694"),
    "StudentName" : "John",
    "StudentFavouriteSubject" : [
        "C",
        "Java"
    ]
}
{
    "_id" : ObjectId("5c90c0584afe5c1d2279d696"),
    "StudentName" : "David",
    "StudentFavouriteSubject" : [
        "MongoDB",
        "Java"
    ]
}

출력 결과를 보면, 위 쿼리는 StudentFavouriteSubject 배열에 "Java"라는 값을 포함하고 있는 모든 도큐먼트(John과 David)를 정확히 반환한 것을 확인할 수 있습니다. 이처럼 MongoDB에서는 별도의 연산자 없이도 필드 이름과 값을 지정하는 것만으로 배열 내부의 요소를 손쉽게 검색할 수 있습니다.