반응형
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]]});
이 쿼리에 대한 포인터는 유용합니다.감사해요.
흥미로운 질문입니다. 이것은 효과가 있을 것입니다.
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" ] ] }
첫 번째 위치 데이터의 배열을 찾으려면 0을 참조 인덱스로 사용하여 중첩 배열의 데이터를 가져옵니다.
db.getCollection('routes').find({"routeId" : 12,'routes._id':ObjectId("598da27a713f3e6acd72287f"),'routes.0.stops.0.orders.0._id':ObjectId("598da27a713f3e6acd722887")})
"cd_id": [{"id": "63fa3cd15595d06245a950ed", {"id": "63fa3cd15595d06245a950ed"},
merchant_id: {$elemMatch: {id: merchant } }
언급URL : https://stackoverflow.com/questions/12629692/querying-an-array-of-arrays-in-mongodb
반응형
'sourcecode' 카테고리의 다른 글
jq 파일의 텍스트를 직접 바꿉니다(예: sed -i). (0) | 2023.05.04 |
---|---|
@HostBinding 및 @HostListener: 그들은 무엇을 하고 무엇을 위한 것입니까? (0) | 2023.05.04 |
데이터 프레임에 사전 추가 (0) | 2023.05.04 |
fatal: 올바른 개체 이름이 아닙니다. 'master' (0) | 2023.05.04 |
Python 2와 3 사이의 numpy 어레이의 피클 비호환성 (0) | 2023.05.04 |