2

是否可以使用新数据更新现有的 MongoDB 集合。我正在使用 hadoop 作业向 Mongo 读取写入数据。所需的场景是:-说 Mongo 中的第一个集合是

{ 
  "_id" : 1,
  "value" : "aaa"
  "value2" : null
}

从 Mongo 读取数据并处理数据后,MongoDB 应该包含

{ 
  "_id" : 1,
  "value" : "aaa"
  "value2" : "bbb"
}

如果可能,请提供一些虚拟代码。

4

4 回答 4

3
BasicBSONObject query=new BasicBSONObject();
query.append("fieldname", value);
BasicBSONObject update=new BasicBSONObject();

update.append("$set", new BasicBSONObject().append("newfield",value));
MongoUpdateWritable muw=new MongoUpdateWritable(query,update,false,true);
contex.write(key, muw);

查询:用于提供条件(匹配条件)。

update:用于在现有集合中添加新字段和值。

MongoUpdateWritable : 第三个参数是 upsert 值(与 mongodb 相同)

第 4 个参数是集合中多个文档的多次更新。

在 Driver 类中设置 job.setOutputValueClass(MongoUpdateWritable.class);

于 2013-06-21T19:11:13.500 回答
1

我通过扩展org.apache.hadoop.mapreduce.RecordWriter和覆盖这个类的 write 方法来做到这一点。

于 2012-07-25T06:19:36.427 回答
0

Mongo-Hadoop 连接器当前不支持此功能。如果您愿意,可以在MongoDB Jira中打开功能请求。

于 2012-06-06T14:53:24.753 回答
0

我是通过stratio做的,如果你用的是spark,你可以看看!

于 2016-10-28T07:38:39.270 回答