1

我正在尝试找到迭代 MongoDB 中数据的最快方法。我收集了 60k 个文档,我希望每个文档中的remove所有fields值都是NULL. (从 MySQL 转移)。我仅删除一个字段的测试功能是:

  db.collection.find({cc_type:null}).forEach(function(u) {
            db.collection.update(u, {$unset:{"cc_name":1} 
            //some other null-value fields to check
}); 

浏览数据大约需要 20 秒。我究竟做错了什么?另外,我正在为 PHP 使用 MongoDB 驱动程序。在 PHP 中迭代数据而不是使用 MongoDB 工具不是更有效吗?迭代大量数据并对其进行一些更改的最佳实践是什么(每个文档的不同更改取决于存在的字段)?

4

1 回答 1

1

update在一次操作中完成它会更快。在外壳中它将是:

db.collection.update({cc_type:null}, {$unset: {cc_name: 1}}, false, true)

true参数是multi标志,因此它会影响所有文档,而不仅仅是第一个。

于 2013-02-23T02:02:24.923 回答