2017-03-22 18 views
0

私は2角形検索を実行するためにjavascriptを使用しています。変数テストのカウントは5です。 js部分は実行されますが、mongodbクエリは実行されません。以下で分かるように、mongoクエリーは、変数test; test [4] .count = 15内のオブジェクト番号4のみに対処するカウント15を与えます。 0から3javascriptのMongoクエリ

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

related/dupe http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – rlemon

答えて

0

現在のアプローチの問題は、forループにcount()の結果を明示的に印刷していないことです。 mongoシェルは実行された最後のコマンドの結果を出力します。そのため、ループが終了したときの最後のカウントの出力が表示されます。あなたはまた、例えば、count()にパラメータとしてクエリ述語を含めることによって、より簡潔にクエリを記述することができ

for (i=0; i<test.length(); i++) { 
    print(i); 
    print(db.assets.find({"title.categories":test[i].path}).count()); 
} 

::の詳細については

print(db.assets.count({"title.categories":test[i].path})); 

あなたのコードではなく、のようになります。カーソルの操作については、Iterate a Cursor in the mongo Shellを参照してください。