1

NodeJS 여기MongoDB를 두 번 사이의 데이터를 필터링하는 방법

var filter = {}; 
filter.strBillDate = { 
    "$gte": new Date(req.params.fromdate), 
    "$lt": new Date(req.params.todate) 
}; 

Sales.find(filter).exec(function(err, salesdata) { 
    return res.send(salesdata); 
}); 

그것은이 이일 bewtween 데이터를 필터링합니다. 매일이 시간 사이에 데이터를 필터링해야합니다. (예 : 일주일에 오후 7 시부 터 10 시까 지)

답변

1

집계 프레임 워크를 사용하고 문서 필터링에 Date Aggregation Operators을 이용할 수 있습니다.

주어진 요일 사이에 문서를 필터링하려면 초기 $match 필터가 필요합니다.

그런 다음 $hour 연산자를 사용하여 날짜 필드에 시간 물약을 보유하고 새 필드를 만들 $project 파이프 라인을 사용할 수 있습니다. 그런 다음 추가 범위 $match을 적용하여 시간 범위의 문서를 필터링합니다. 예를 들어

테이크 집계 프레임 워크 명심 당신이 반환 할 필드를 투사 할 것,이 방법을 보여줍니다 예 :

var filter = {}; 
filter.strBillDate = { 
    "$gte": new Date(req.params.fromdate), // start of week date 
    "$lt": new Date(req.params.todate)  // end of week date 
}; 

Sales.aggregate([ 
    { "$match": filter }, 
    { 
     "$project": { 
      "strBillDate": 1, 
      "hourPart": { "$hour": "$strBillDate" }, 
      /* 
       project other fields as necessary 
      */ 
     } 
    }, 
    { "$match": { "hourPart": { "$gte": 19, "$lte": 22 } } } 
]).exec(function(err, salesdata) { 
    return res.send(salesdata); 
}); 

더 효율적인 방법이 포함 것 $redact 연산자를 사용하는 단일 파이프 라인은 다음과 같습니다.

관련 문제