在Mongo Shell中使用双嵌套forEach时,如何计算迭代次数?

时间:2018-12-17 14:19:26

标签: mongodb mongo-shell

我需要执行以下查询:

db.collection.find({}).forEach(function (doc) { doc.records.forEach(function (record) { if (record.user.email.includes("example.com") || record.user.email.includes("example.co.uk")) { record.user.internal =  true; } else { record.user.internal = false }}); db.collection.save(doc); });

由于它是一个双嵌套的forEach循环,是否有一种方法可以计算出它将遍历数据库中所有文档中的所有records的迭代次数?我尝试使用count(),但似乎不适用于forEach()

1 个答案:

答案 0 :(得分:0)

mongo shell支持javascript,因此您可以引入变量并在循环中对其进行递增。

var count=0  //variable to hold the number of iterations.
db.collection.find({

}).forEach(function(doc){
    doc.records.forEach(function(record){
        if(record.user.email.includes("example.com")||record.user.email.includes("example.co.uk")){
            record.user.internal=true;
        }else{
            record.user.internal=false
        }
    });
    db.collection.save(doc);
    count++;
});
print(count)