是否可以使用新数据更新现有的MongoDB集合。我正在使用hadoop作业来读取写入数据到Mongo。所需方案是: - 说Mongo的第一个集合是
{
"_id" : 1,
"value" : "aaa"
"value2" : null
}
从Mongo读取数据并处理数据后,MongoDB应该包含
{
"_id" : 1,
"value" : "aaa"
"value2" : "bbb"
}
如果可能,请提供一些虚拟代码。
答案 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完成的,如果你使用了火花,你可以查看它!