【问题标题】:Using MongoDB self-referenced values in query在查询中使用 MongoDB 自引用值
【发布时间】:2012-04-26 22:25:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: mongodb mapreduce pymongo


    【解决方案1】:

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

    【讨论】:

    • 好答案。小提示:您应该在示例末尾添加一个结束括号以使其成为工作语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2020-11-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多