오브젝트 배열을 포함하는 콜렉션이 있습니다. 나는 하나의 객체를 매개 변수로 사용하여 검색하기 위해 $elemMatch
을 사용하는 방법을 알고 있지만 배열의 여러 객체의 값을 사용하는 방법이 필요합니다.Mongo 콜렉션에서 오브젝트 배열 검색
시료 채취 : 나는 다음 조건 중 하나와 일치하는 모든 기록과 일치하는 검색 조건을 지정하려면 어떻게
{ '_id' : ObjectId('5788804292a1c428cd5377ff'), 'index' : 'a', 'data' : [ { 'value0' : 'data_a' }, { 'value1' : 'data_b' }, { 'value2' : 'data_c' } ] }
{ '_id' : ObjectId('5788804b92a1c428cd537800'), 'index' : 'b', 'data' : [ { 'value0' : 'data_a' }, { 'value1' : 'data_x' }, { 'value2' : 'data_c' } ] }
{ '_id' : ObjectId('5788805592a1c428cd537801'), 'index' : 'c', 'data' : [ { 'value0' : 'data_a' }, { 'value1' : 'data_x' }, { 'value2' : 'data_y' } ] }
:
value1 == data_b
및value2 == data_c
value1 == data_x
및value2 == data_y
는 내가 find
와 함께 다음과 같은 시도했지만 결과가 반환되지 않습니다 :
{'data': {$elemMatch: {$in: [{'value1': 'data_b', 'value2': 'data_c'}, {'value1':'data_x', 'value2': 'data_y'}]}}}
그래, 그게 효과가있어. 당신의 응답을 주셔서 감사합니다. 귀하의 응답에 따라'$ or'와'$ and'를'$ elemMatch'와 함께 배열에 사용하게되었습니다. (실제 객체는 훨씬 더 복잡하고 위의 콜렉션은 단순화 된 예제입니다). – schaazzz