使用$ gte和$ lte进行动态MongoDB查询?

时间:2016-08-17 01:58:02

标签: mongodb

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

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,而不根据传入的值将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);

1 个答案:

答案 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');