在查询中使用MongoDB自引用值

时间:2012-04-15 05:17:44

标签: mongodb mapreduce pymongo

是否可以在MongoDB的更新查询中获取自引用值?在MySQL中,您可以运行:

UPDATE table SET column1 = column2 + column3,...

据我所知,只有MapReduce可用于在MongoDB中的服务器端执行此操作。如何使用MapReduce执行此操作?

1 个答案:

答案 0 :(得分:3)

  

是否可以在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
} )