这是我的基本时间表对象查询:
return TimeSheet.find({
submitDate : { '$gte': util.minDate(params.startDate), '$lte': util.maxDate(params.endDate)},
submitted: true,
user: params.userId
}, callBack(res)).populate('user timeEntries');
但是,我希望根据前端过滤器搜索submitDate
或workDate
,而不根据传入的值将if和另一个查询包含在if语句中。我想在变量定义的字段上执行$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 :(得分: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');