查询mongodb中的参数数组

时间:2015-07-26 04:02:59

标签: mongodb mongoose

我在数据库中有以下集合,我想检索出生月等于给定2个月的数据。让我们说[1,2],或[4,5]

{   
    "_id" : ObjectId("55aa1e526fea82e9a4188f38"),
    "name" : "Nilmini",   
    "birthDate" : 6,
    "birthMonth" : 1
},
{   
    "_id" : ObjectId("55aa1e526fea82e9a4188f39"),
    "name" : "Ruwan",   
    "birthDate" : 6,
    "birthMonth" : 1
},{ 
    "_id" : ObjectId("55aa1e526fea82e9a4188f40"),
    "name" : "Malith",   
    "birthDate" : 6,
    "birthMonth" : 1
},
{   
    "_id" : ObjectId("55aa1e526fea82e9a4188f7569"),
    "name" : "Pradeep",   
    "birthDate" : 6,
    "birthMonth" : 7
}

我使用下面的查询来获取结果集,我可以得到一个月的结果,现在我想得到多个月的结果。

      var currentDay = moment().date();
        var currentMonths = [];
        var currentMonth = moment().month();
        if(currentDay > 20){
            currentMonths.push(moment().month());
            currentMonths.push(moment().month()+1);
        }else{
          currentMonths.push(currentMonth);
        }
    // In blow query I am trying to pass the array to the 'birthMonth', 
I'm getting nothing when I pass array to the query, I think there should be another way to do this,
    Employee.find(
            {
                "birthDate": {$gte:currentDay}, "birthMonth": currentMonths
            }, function(err, birthDays) {
            res.json(birthDays);
        });

如果你能帮我解决这个问题我真的很感激

1 个答案:

答案 0 :(得分:2)

您可以使用$in运算符来匹配数组中的多个值,例如Employee.find( { "birthDate": {$gte:currentDay}, "birthMonth": {$in: currentMonths} }, function(err, birthDays) { res.json(birthDays); });

所以你的查询是:

{{1}}