2015-01-28 2 views
0

MongoDb 문서에는 다음과 같은 스키마가 있습니다. "Display"플래그가 true로 설정된 항목 만 표시하려고합니다.MongoDB에서 배열 내의 하위 문서를 기반으로 상위 항목을 필터링하는 방법은 무엇입니까?

{ 
    id: 123, 
    properties : [ 
    {name : "Name", value: "Value"}, 
    {name : "Description", value: "A description of the item"}, 
    {name : "Display", value: true} 
] 

}

나는 MongoDB의에서이 작업을 수행하는 방법을 알아낼 수 없습니다입니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

전체 배열 항목을 일치 시키려면 $elemMatch 연산자를 사용해야합니다.

이렇게하면 모든 조건과 동시에 일치하는 배열 항목이있는 문서 만 반환됩니다.

쿼리

db.col.find({"properties.name" : "Display", "properties.value" : true}); 

배열 항목의 조합을 일치합니다.

는 예를 들어, 다음 문서는이 경우에 반환되는 :

{ 
    id: 123, 
    properties : [ 
     {name : "Name", value: "Value"}, 
     {name : "Description", value: "A description of the item"}, 
     {name : "Display", value: false}, 
     {name : "AnotherOne", value: true} 
    ] 
} 
+0

덕분에 빠른 응답을 많이. 이것은 나를 위해 작동합니다. – Sarathy