Node.js / MongoDB过滤日期范围

时间:2016-03-17 15:24:35

标签: node.js mongodb

我尝试按GET

中的日期范围动态参数过滤查询
        TextView view = LayoutInflater.from(mContext).inflate(R.layout.progress_item, viewGroup, false);

例如,我的选项看起来像

var date_from = req.query['date_from'];
var date_to = req.query['date_to'];
var options = {};
if(date_from){
        if(!options["sentDateTime"]) options["sentDateTime"] = [];
    var dateFrom = moment(new Date(date_from)).toDate();
        options["sentDateTime"]['$qte'] = dateFrom;
}

if(date_to){
    if(!options["sentDateTime"]) options["sentDateTime"] = [];
    var dateTo = moment(new Date(date_to)).toDate();
        options["sentDateTime"]['$lte'] = dateTo;
}

其余代码

{ sentDateTime: { '$qte': Tue Mar 01 2016 00:00:00 GMT+0000 (GMT) } }

但它返回零文件。

编辑:

更改后,我的对象看起来像这样

db.client.collection('mails_ed').find(options).limit(parseInt(req.query['limit'])).toArray(function(err, docs) {
// ...
})

正如您所看到的那样,选项包含在数组' []'我该如何解决?

1 个答案:

答案 0 :(得分:1)

您需要使用花括号而不是方括号来创建对象文字。另外,我认为你的意思是$gte而不是$qte

var date_from = req.query['date_from'];
var date_to = req.query['date_to'];
var options = {};
if(date_from){
        if(!options["sentDateTime"]) options["sentDateTime"] = {};
    var dateFrom = moment(new Date(date_from)).toDate();
        options["sentDateTime"]['$gte'] = dateFrom;
}

if(date_to){
    if(!options["sentDateTime"]) options["sentDateTime"] = {};
    var dateTo = moment(new Date(date_to)).toDate();
        options["sentDateTime"]['$lte'] = dateTo;
}