2017-04-14 1 views
0

아이디어는 배열이 정의 된 경우 주어진 배열에 필드가 포함 된 문서를 가져 오는 JS에서 요청을하거나 배열이 정의되지 않은 경우 모든 문서를 가져 오는 것입니다 (JS에서).

$ in 인수에 행동을 무효화하는 매개 변수를 제공하는 우아한 의미가 있는지 궁금해했습니다.이 매개 변수는 한 줄로 사용할 수 있습니다. 이런 종류의 조건부 요청을 더 우아하게 만들어야한다는 생각을 가지고 있습니다.

여기 몽구스를 사용하여 코드 조각입니다 :

let query = SomeModel.find(); 
if (someArray) { 
    query = query.where(someField).in(someArray); 
} 
query.exec(); 

물론 작동하지만, 너무 너무 멋진하지, 변수에 쿼리를 저장해야합니다.

답변

0

집계가 도움이 될 수 있습니다.

let itemValues = someArray || []; 
SomeModel.aggregate([ 
{ 
    $match: { 
     "someField": { 
      [itemValues.length > 0 ? "$in" : "$nin"]: itemValues} 
     } 
} 
]).exec() 
+0

좋아요! $ nin을 사용하여 성능 손실이 있는지 확인하려고 노력할 것입니다. – Cobaltway

+0

벤치 마크 테스트의 결과를 알고 싶습니다. – Anand

관련 문제