2016-08-17 47 views
1

这是我的基本时间表对象查询:

return TimeSheet.find({ 
    submitDate : { '$gte': util.minDate(params.startDate), '$lte': util.maxDate(params.endDate)}, 
    submitted: true, 
    user: params.userId 
}, callBack(res)).populate('user timeEntries'); 

不过,我想会到基于前端滤波器submitDateworkDate搜索没有在包装这和另一个查询,如果基于通过声明值。我想对由变量定义的字段执行$gte$lte

我已经看过这里的其他一些答案,如this one here,,但它似乎有点简单,我想要做的。

什么是适当的语法在这里?我试过看MongoDB文档,但我似乎无法得到它。这可能吗?

这是我到目前为止所尝试过的。

var query = {}; 


query['submitDate'] = []; 
query['submitDate']['$gte'] = util.minDate(params.startDate); 
query['submitDate']['$lte'] = util.maxDate(params.endDate); 
+0

当放在一起这样的动态查询,您可以轻松地检查它是否是正确的还是不通过调试和检查_query_变量的状态。它应该,如果你的积累是正确的,就应该有一个和第一个代码示例中一样的结构。 –

回答

1

应该很相似,你所引用的参考:

var dateFilterToUse = /*logic to populate this varibale with "submitDate" or "workDate" based on your front end filter*/; 
var findJSON = { 
    submitted: true, 
    user: params.userId 
}; 
findJSON[dateFilterToUse]= { '$gte': util.minDate(params.startDate), '$lte': util.maxDate(params.endDate)}; 

return TimeSheet.find(findJSON, callBack(res)).populate('user timeEntries'); 
+0

这样做,谢谢。我想我已经过了复杂的事情了。 – Hoser

相关问题