【问题标题】:How does javascript forEach() function iterate documents in mongodb shell?javascript forEach() 函数如何在 mongodb shell 中迭代文档?
【发布时间】:2019-01-03 03:57:24
【问题描述】:

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(),然后尝试findOne() 第二个集合(集合B)上的相应匹配文档。代码中只有一次迭代,即在forEach() 内。我想我不明白你的意图。您是在询问forEach() 将处理的序列的顺序吗?

标签: javascript mongodb foreach mongo-shell


【解决方案1】:
db.collection.find(query).forEach(function(err, doc) {
  // ...
});

Foreach 返回错误函数作为第一个参数,文档作为第二个参数

【讨论】:

  • 不一定。如果您在回调中提供一个参数,则它是您的项目,而不是错误消息。
  • OP指的是mongo shell操作,而不是node.js
猜你喜欢
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多