2013-06-19 4 views
0

값으로 채워진 배열로 필드가있는 $match을 원합니다. 배열의 크기는 다양 할 수 있습니다. 제발 어떻게 할 수 있니? 당신은 $nin을 사용할 수 있습니다Mongo Aggregation 프레임 워크의 배열 유형 필드를 "정교하게"필터링합니까?

> db.so.insert({data: [true, true, false, false], name: 'A'}) 
> db.so.insert({data: [false, false, false], name: 'B'}) 
> db.so.insert({data: [false, false, true], name: 'C'}) 
> db.so.insert({data: [false], name: 'D'}) 

: 같은

답변

2

을 감안할 때 데이터

> db.so.aggregate({$match: { data : { $nin: [true] }} }) 
{ 
     "result" : [ 
       { 
         "_id" : ObjectId("51c1f654e376a9016c5a9a6d"), 
         "data" : [ 
           false, 
           false, 
           false 
         ], 
         "name" : "B" 
       }, 
       { 
         "_id" : ObjectId("51c1f65fe376a9016c5a9a6f"), 
         "data" : [ 
           false 
         ], 
         "name" : "D" 
       } 
     ], 
     "ok" : 1 
} 

당신은 당신이뿐만 아니라 원하는 경우 배열이 존재하는지 확인하기 위해 $and를 사용할 수 있습니다. HTTP : // 문서이 계산 (onlyFalse=true)의 값을 미리 계산 할 수 있다면

, 선명도에 대한 참조를 추가,

+0

감사 (등, 데이터의 양에 따라) 작동 빠를 수 있습니다. mongodb.org/manual/reference/operator/nin/ – BreakPhreak