2012-05-30 32 views
2

是否可以使用新数据更新现有的MongoDB集合。我正在使用hadoop作业来向Mongo读取写入数据。所需的方案是: - 说在蒙戈第一个系列是使用Java-Hadoop连接器更新MongoDB中的现有集合

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

从蒙戈和处理数据读取数据后,MongoDB中应包含

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

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

+1

难道你不能使用$ set basicDBObject的简单更新吗? – peshkira

回答

1

我已经通过扩展org.apache.hadoop.mapreduce.RecordWriter和覆盖此类的写入方法来完成它。

0

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

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)

第四个参数是一个集合在许多文件多个更新。

坐落在Driver类 job.setOutputValueClass(MongoUpdateWritable.class);

0

我已经被stratio做到了,如果你使用的火花,你可以检查出来!