복붙노트

[MONGODB] 쿼리 MongoDB를 배열의 첫 번째 항목에서 일치하는

MONGODB

쿼리 MongoDB를 배열의 첫 번째 항목에서 일치하는

나는 배열의 항목의 존재 여부를 검색 할 나타납니다 운영자에 $, 알고 있어요,하지만 난 단지 항목이 배열의 첫 번째 위치에있는 경우 일치를 찾고 싶어요.

예를 들어 :

{
    "_id" : ObjectId("0"),
    "imgs" : [
        "http://foo.jpg",
        "http://bar.jpg",
        "http://moo.jpg",
        ]
},
{
    "_id" : ObjectId("1"),
    "imgs" : [
        "http://bar.jpg",
        "http://foo.jpg",
        "http://moo.jpg",
        ]
}

나는 유사한 쿼리를 찾고 있어요 :

db.products.find({"imgs[0]": "http://foo.jpg"})

단지 배열의 첫 번째 화상에 대해 검사있어 이것은 / ObjectId가 ( "0")가 아닌 ObjectId가 ( "1")을 반환해야한다.

이것은 어떻게 달성 할 수 있습니까? 난 그냥 firstImg에 대한 하나의 문자열을 포함하는 별도의 필드를 만들 수 있습니다 알고 있어요하지만 난 후 여기있어 정말로 아니다.

해결법

  1. ==============================

    1.난 당신이 imgs.0을 원하는 생각합니다. 예를 들면, 귀하의 예제 문서 제공, 당신은하고 싶은 말 : db.products.find을 ({ "imgs.0": "HTTP : //foo.jpg를"})

    난 당신이 imgs.0을 원하는 생각합니다. 예를 들면, 귀하의 예제 문서 제공, 당신은하고 싶은 말 : db.products.find을 ({ "imgs.0": "HTTP : //foo.jpg를"})

    배열 인덱스를 참조하는 첫 번째 수준의 배열에 대한 작동하는지 알고 있어야합니다. 몽고는 깊은 배열 인덱스를 검색을 지원하지 않습니다.

  2. ==============================

    2.당신은 배열 인덱스 점 표기법을 사용할 수 있습니다 :

    당신은 배열 인덱스 점 표기법을 사용할 수 있습니다 :

    db.products.find({"imgs.0": "http://foo.jpg"})
    

    다음은 점 표기법에 대한 관련 문서에서 발췌 한 것입니다.

    또한, 여기에 관련 어레이 설명서에 대한 링크입니다.

  3. from https://stackoverflow.com/questions/19899299/querying-mongodb-to-match-in-the-first-item-in-an-array by cc-by-sa and MIT license