복붙노트

[MONGODB] 정확한 배열 매치을 찾을 순서는 중요하지 않습니다 MongoDB를

MONGODB

정확한 배열 매치을 찾을 순서는 중요하지 않습니다 MongoDB를

나는 정확한 배열 일치를 찾기위한 쿼리하고 성공적으로 검색하지만 그때 다른 순서로 값을 정확한 배열을 찾을 때 그것은 실패 할 수 있어요.

db.coll.insert({"user":"harsh","hobbies":["1","2","3"]})
db.coll.insert({"user":"kaushik","hobbies":["1","2"]})
db.coll.find({"hobbies":["1","2"]})

2 문서 검색된 성공

db.coll.find({"hobbies":["2","1"]})

아무것도 표시하지

도와주세요

해결법

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

    1.현재 허용 대답은 크기가 동일 단지, 배열에 정확히 일치를 보장하지 않고 쿼리 배열이 배열의 주가는 적어도 하나 개의 항목입니다.

    현재 허용 대답은 크기가 동일 단지, 배열에 정확히 일치를 보장하지 않고 쿼리 배열이 배열의 주가는 적어도 하나 개의 항목입니다.

    예를 들어, 쿼리

    db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] }  });
    

    아직도 그 경우에 사용자 Kaushik이를 반환합니다.

    당신이 정확히 일치해야하는 것은과 같이, 모든 $와 $ 크기를 결합하는 것입니다 :

    db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] }  });
    

    그러나 이것이 당신의 양 및 데이터의 구조에 따라, 매우 비용이 많이 드는 작업이 될 수 있음을 유의하십시오. MongoDB를 삽입 배열 안정의 순서를 유지하기 때문에, 당신은 때 쿼리 정적 순서에 의존 할 수 그래서는 DB에 삽입 할 때 정렬 된 순서로 배열을 보장 더 잘 지낼 수 있습니다.

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

    2.배열 필드가 정확히 몽고도 값과 같은 배열을 통해 조작 할 수 있습니다 $ eq 연산자를 제공 일치합니다.

    배열 필드가 정확히 몽고도 값과 같은 배열을 통해 조작 할 수 있습니다 $ eq 연산자를 제공 일치합니다.

    db.collection.find({ "hobbies": {$eq: [ "singing", "Music" ] }});
    

    또한 $ EQ 검사는 요소를 지정하는 순서를.

    당신은 쿼리 아래 사용하는 경우 :

    db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] }  });
    

    그런 다음 일치는 반환되지 않습니다. 당신을 쿼리 가정 :

    db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "2" ] }  });
    

    이 질의는 소자 (2)를 갖는 모든 문서를 반환하고 크기 2를 갖는 것 (예를 들어, 또한 문서 갖는 hobies를 반환한다 [2,1]).

  3. ==============================

    3.이 쿼리는 어떤 순서로 정확한 배열을 찾을 수 있습니다.

    이 쿼리는 어떤 순서로 정확한 배열을 찾을 수 있습니다.

    let query = {$or: [
    {hobbies:{$eq:["1","2"]}},
    {hobbies:{$eq:["2","1"]}}
    ]};
    
    db.coll.find(query)
    
  4. ==============================

    4.$ 모든 우리는이 작업을 수행 할 수 있습니다.  검색어 : {캐스트 : {$ 모든 : [ "제임스 J. 코베트", "조지 BICKEL"]}}

    $ 모든 우리는이 작업을 수행 할 수 있습니다.  검색어 : {캐스트 : {$ 모든 : [ "제임스 J. 코베트", "조지 BICKEL"]}}

    출력 : 캐스트 : [ "조지 BICKEL", "엠마 카루스", "조지 M 코한", "제임스 J. 코베트"]

  5. from https://stackoverflow.com/questions/29774032/mongodb-find-exact-array-match-but-order-doesnt-matter by cc-by-sa and MIT license