使用Java-Hadoop连接器更新MongoDB中的现有集合

时间:2012-05-30 13:25:45

标签: java mongodb hadoop mapreduce mongodb-hadoop

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

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

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

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

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

4 个答案:

答案 0 :(得分: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);

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

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

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

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

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

答案 1 :(得分:1)

我通过扩展org.apache.hadoop.mapreduce.RecordWriter并覆盖此类的write方法来完成它。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我是由stratio完成的,如果你使用了火花,你可以查看它!