MongoDB迭代

时间:2013-02-23 01:59:09

标签: php javascript performance mongodb

我正在尝试找到迭代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工具会更有效吗?迭代大量数据并对其进行一些更改的最佳做法是什么(每个文档的不同更改取决于存在的字段)?

1 个答案:

答案 0 :(得分:1)

在一次update操作中执行此操作会更快。在shell中它将是:

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

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