복붙노트

[MONGODB] MongoDB의 배열에 배열 쿼리

MONGODB

MongoDB의 배열에 배열 쿼리

말은,이 같은 문서가 ..

"ID" : "fruit1",
"Keys" : [["apple", "carrot", "banana"]]

어떻게 키를 쿼리 = "당근"않습니다. 다음 구문 작품 없음.

db.myColl.results.find({ "Keys" : "carrot" });
db.myColl.results.find({ "Keys" : [["carrot"]] });

하지만 작품에 이어,하지만 도움이되지 않습니다.

db.myColl.results.find({ "Keys" : [["apple", "carrot", "banana]]});

이 쿼리에 대한 모든 포인터가 도움이 될 것입니다. 감사.

해결법

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

    1.재미있는 질문은,이 트릭을 할 것입니다

    재미있는 질문은,이 트릭을 할 것입니다

     db.multiArr.find({'Keys':{$elemMatch:{$elemMatch:{$in:['carrot']}}}})
    

    $ elemMatch 배열의 요소는 지정된 경기의 표현과 일치 여부를 확인하는 데 사용됩니다. 그래서 $ elemMatch 중첩 배열로 깊이 갈 것입니다 중첩

    테스트 데이터

    db.multiArr.insert({"ID" : "fruit1","Keys" : [["apple", "carrot", "banana"]]})
    db.multiArr.insert({"ID" : "fruit2","Keys" : [["apple", "orange", "banana"]]})
    
    
    db.multiArr.find({'Keys':{$elemMatch:{$elemMatch:{$in:['carrot']}}}})
    { "_id" : ObjectId("506555212aeb79b5f7374cbf"), "ID" : "fruit1", "Keys" : [ [ "apple", "carrot", "banana" ] ] }
    
    db.multiArr.find({'Keys':{$elemMatch:{$elemMatch:{$in:['banana']}}}})
    
    { "_id" : ObjectId("506555212aeb79b5f7374cbf"), "ID" : "fruit1", "Keys" : [ [ "apple", "carrot", "banana" ] ] }
    { "_id" : ObjectId("5065587e2aeb79b5f7374cc0"), "ID" : "fruit2", "Keys" : [ [ "apple", "orange", "banana" ] ] }
    
  2. ==============================

    2.먼저 위치 데이터의 배열을 찾으려면, 중첩 된 배열에서 데이터를 얻을 참조 인덱스 0을 사용합니다.

    먼저 위치 데이터의 배열을 찾으려면, 중첩 된 배열에서 데이터를 얻을 참조 인덱스 0을 사용합니다.

    db.getCollection('routes').find({"routeId" : 12,'routes._id':ObjectId("598da27a713f3e6acd72287f"),'routes.0.stops.0.orders.0._id':ObjectId("598da27a713f3e6acd722887")})
    
  3. from https://stackoverflow.com/questions/12629692/querying-an-array-of-arrays-in-mongodb by cc-by-sa and MIT license