2017-12-27 8 views
0

나는 Mongo에서 부분적인 인덱스를 테스트 해왔고, $match 단계에서 aggregation expression을 사용하면 올바른 인덱스를 사용하는 데 방해가되는 것으로 보인다.Mongo aggregation match expression과 부분적인 인덱스

예를 들어, 나는 다음과 같은 문서와 data 모음이 있습니다

{ 
    "type": "person", 
    "value": { 
     "id": 1, 
     "name": "Person 1", 
     "age": 10 
    } 
}, 
{ 
    "type": "person", 
    "value": { 
     "id": 2, 
     "name": "Person 2", 
     "age": 20 
    } 
} 

을 그리고 {"type": "person"} 문서에 대한 부분 인덱스를 만들 수 있습니다. 집계를 실행할 때

{ 
    "$match": { 
     "type": "person", 
     "value.age": { "$gte": 15 } 
    } 
} 

색인은 히트를 기록하지만 다음 집계를 수행하는 경우에는 색인이 적용되지 않습니다.

{ 
    "$match": { 
     "$expr": { 
      "$and": [ 
       { "$eq": ["$type", "person"] }, 
       { "$gte": ["$value.age", 15] }, 
      ] 
     } 
    } 
} 

의 부분 색인과 집계 표현식이 호환되지 않습니까? 이 일을 할 수있는 방법이 있습니까?

추 신 : let 및 파이프 라인 syntax으로 $lookup을 만들고 있기 때문에 집계 표현식을 사용해야합니다.

답변

0

당신은 내 질문의 첫 번째 집합의 동등의

{ 
 
    "$match": { 
 
     "$and": [ 
 
       {"type": "person" }, 
 
       {"value.age": {"$gte":15}}, 
 
     ] 
 
    } 
 
}

+0

를 사용할 수 있습니다. 내가 할 수 있다는 것을 알고 있지만, [집계 표현식] (https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions)을 사용하지 않습니다. 편집 된 질문이 명확히 나타납니다. –

관련 문제