【发布时间】:2012-04-26 22:25:33
【问题描述】:
是否可以在 MongoDB 的更新查询中获取自引用值?在 MySQL 中,您可以运行:
UPDATE table SET column1 = column2 + column3,...
据我所知,只有 MapReduce 可用于在 MongoDB 的服务器端执行此操作。我如何使用 MapReduce 来做到这一点?
【问题讨论】:
是否可以在 MongoDB 的更新查询中获取自引用值?在 MySQL 中,您可以运行:
UPDATE table SET column1 = column2 + column3,...
据我所知,只有 MapReduce 可用于在 MongoDB 的服务器端执行此操作。我如何使用 MapReduce 来做到这一点?
【问题讨论】:
是否可以在 MongoDB 的更新查询中获取自引用值?
不,正常的查询/更新系统无法进行此更新。
据我所知,只有 MapReduce 可用于在 MongoDB 的服务器端执行此操作。
Map / Reduce 用于汇总现有数据并将该数据输出到单独的集合/表中。 Map / Reduce 不打算更新现有数据。
要使用 MongoDB 运行此更新,您需要在整个集合上运行一个简单的 for 循环,更新每个集合。您可以从包括 shell 在内的任何驱动程序中执行此操作。
db.table.find().forEach( function(x) {
var newValue = x.column2 + x.column3; // Add column2 & 3
db.table.update({_id: x._id}, { $set: { column1: newValue } }); // Set the value on column1
} )
【讨论】: