Php 批量更新mongo记录

Php 批量更新mongo记录,php,sql,mongodb,nosql,Php,Sql,Mongodb,Nosql,我有一个巨大的分片mongo集合(总计约1600万条记录),我需要浏览并添加一个属性。在当前服务器上,编写一个脚本来循环这些属性,检查属性是否丢失,并编写新属性可能至少需要一周的时间。新属性只是大写的现有属性 现在,我正在选择不带属性的记录,然后使用PHP遍历结果集,将属性添加到数组中,然后重新保存记录 这不可能是最有效的方法——没有等效的方法吗 UPDATE mytable SET attribute = UPPER(old_attribute) WHERE attribute IS NULL

我有一个巨大的分片mongo集合(总计约1600万条记录),我需要浏览并添加一个属性。在当前服务器上,编写一个脚本来循环这些属性,检查属性是否丢失,并编写新属性可能至少需要一周的时间。新属性只是大写的现有属性

现在,我正在选择不带属性的记录,然后使用PHP遍历结果集,将属性添加到数组中,然后重新保存记录

这不可能是最有效的方法——没有等效的方法吗

UPDATE mytable SET attribute = UPPER(old_attribute) WHERE attribute IS NULL

在mongo?

中有一个带有更新查询的$set,您可以试试这个

db.collection.update({attribute: null}, {$set:{"attribute":value}})

@Rohit--谢谢,但正如文章中所述,需要设置的属性是一个现有的属性,仅大写。您可以像db.collection.update一样尝试({attribute:null},{$set:{“attribute”:value.toUpperCase()})希望它能工作:)