복붙노트

[MONGODB] 하여 MongoDB에서 제공된 배열의 조합을 포함하는 배열 필드 매칭

MONGODB

하여 MongoDB에서 제공된 배열의 조합을 포함하는 배열 필드 매칭

내가 배열 요소의 지정된 목록 쿼리 싶습니다은 단지 내가 전달하는 요소를 포함 할 수 반환 문서,하지만 필요가 그들 모두를 포함하지 그.

을 감안할 때 문서가 좋아 :

{
  name: "Article 1",
  tags: ["Funny", "Rad"]
}

{
  name: "Article 2",
  tags: ["Cool", "Rad"]
}

{
  name: "Article 3",
  tags: ["Rad"]
}

다음은 몇 가지 예를 배열하고 각각의 결과입니다.

나는 그 분명한 이유 피하기 위해 할 위치하지만 확실히 내가 $로이 해낼 수 있어요.

해결법

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

    1.여러 연산자를 결합하여이 작업을 수행 할 수 있습니다 :

    여러 연산자를 결합하여이 작업을 수행 할 수 있습니다 :

    db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
    

    $ 닌과 함께 $ elemMatch는 하나의 태그 요소는 둘 다 '라드'도 '쿨'하지 워드 프로세서를 찾는하고 부모 $하지 그 어떤 요소를 일치하지 않는 모든 문서를 반환하는 경기를 반전시킵니다.

    그러나,이 또한 태그되지 않았거나 또는 어떤 요소가되지 않는 문서를 반환합니다. 보장하지만 태그가 적어도 하나 개의 요소가 있다는 규정을 추가하는 당신이 필요로하는 사람들을 제외하려면 :

    db.test.find({
        tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
        'tags.0': {$exists: true}
    })
    
  2. from https://stackoverflow.com/questions/25318050/matching-an-array-field-which-contains-any-combination-of-the-provided-array-in by cc-by-sa and MIT license