javascript forEach()函数在mongodb shell中如何迭代文档?

6

javascript forEach()函数在mongodb shell中是如何工作的?

处理文档的顺序是什么?

例如,假设我有两个大集合,这两个集合应该包含相同数量的文档(请注意,文档的结构不一定相同),我想迭代第一个集合,并查看第一个集合中的每个文档是否有一个记录在第二个集合中:

db.MyColl.find().forEach(
    function(aDocument) { 
        print("Checking :"+aDocument._MyId)
        var db2 = db.getSiblingDB("mySiblingDb");
        var aDocument2 = db2.MyColl.findOne({_MyId: aDocument._MyId});    
        if (aDocument2 == null) { 
           print("Missing document with _MyId: " + aDocument._MyId);
        }  
    }
);

这段代码是否会按照相同的顺序迭代文档?

“按相同顺序迭代文档”是什么意思?你的代码看起来像是在一个集合(集合A)上执行了find(),然后尝试在第二个集合(集合B)上查找相应匹配的文档。代码中只有一个迭代,在forEach()内部。我猜我不理解你的意图。你是在询问forEach()将处理的顺序吗? - kevinadi
1个回答

0
db.collection.find(query).forEach(function(err, doc) {
  // ...
});

使用foreach时,将错误函数作为第一个参数,文档作为第二个参数返回


1
不一定。如果在回调函数中提供一个参数,那么它就是你的项目而不是错误信息。 - Dimitrios
http://fredkschott.com/post/2014/03/understanding-error-first-callbacks-in-node-js/ - thatcoder
2
OP指的是mongo shell操作,而不是node.js。 - chridam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接