如何通过for循环迭代mongo查询

时间:2016-06-19 21:45:25

标签: mongodb meteor

我想要实现的是以下哪些不起作用:

var names = ["MATT", "GABE", "SAM"];
var students = [];
for (var i = 0; i < 3; i++) {
  students[i] = Programs.find({ CampYear: 2016, 'Teachers.Week1.Sunday': names[i] }).fetch();
  }

我希望它会为每次迭代返回一个学生名称数组,但是当数组应该有名字时我会一直得到一个空数组。

如果我删除for循环并执行:

students[0] = Programs.find({ CampYear: 2016, 'Teachers.Week1.Sunday': listOfSundayTeacherNames[2] }).fetch();

它将返回预期的学生姓名。 for循环是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

想出来。无论出于何种原因,for-loop都不起作用,但使用.map会。

 var names = _.map(names, function(num){ return Programs.find({ CampYear: 2016), 'Teachers.Week1.Sunday': num }).fetch(); });

答案 1 :(得分:0)

更好的方法是在查询中使用 $in 运算符:

var students = Programs.find({ 
    'CampYear': 2016, 
    'Teachers.Week1.Sunday': { '$in': names } 
}).fetch();