我正在使用javascript来运行双管齐下的搜索。变量测试的计数为5。 js部分运行,但它不运行mongodb查询。正如您在下面看到的,mongo查询给出了计数15,它只能解决变量test中的对象编号4; test [4] .count = 15。从0到3没有查询。
var test=db.categories.find({"path":/English\/TEST/OG/},{"path":1})
test.length()==5
for(i=0;i<test.length();i++)
{
print(i);
db.assets.find({"title.categories":test[i].path}).count()
}
0
1
2
3
4
15
似乎一直在跳过查询。
答案 0 :(得分:0)
您当前的方法存在的问题是,您没有在count()
循环中明确打印for
的结果。 mongo
shell打印执行的最后一个命令的结果,这就是为什么在循环退出时碰巧看到最后一个计数的输出。
您的代码应该如下所示:
for (i=0; i<test.length(); i++) {
print(i);
print(db.assets.find({"title.categories":test[i].path}).count());
}
您还可以通过将查询谓词作为参数包含在count()
中来更简洁地编写查询,例如:
print(db.assets.count({"title.categories":test[i].path}));
有关使用游标的更多信息,请参阅Iterate a Cursor in the mongo
Shell。