使用Java Hadoop连接器更新MongoDB中的现有集合
是否可以使用新数据更新现有MongoDB集合。我正在使用hadoop作业向Mongo读写数据。所需情景为:- 假设Mongo的第一个系列是使用Java Hadoop连接器更新MongoDB中的现有集合,java,mongodb,hadoop,mapreduce,mongodb-hadoop,Java,Mongodb,Hadoop,Mapreduce,Mongodb Hadoop,是否可以使用新数据更新现有MongoDB集合。我正在使用hadoop作业向Mongo读写数据。所需情景为:- 假设Mongo的第一个系列是 { "_id" : 1, "value" : "aaa" "value2" : null } 从Mongo读取数据并处理数据后,MongoDB应该包含 { "_id" : 1, "value" : "aaa" "value2" : "bbb" } 如果可能,请提供一些虚拟代码。Mongo Hadoop连接器目前不支持此功能。如
{
"_id" : 1,
"value" : "aaa"
"value2" : null
}
从Mongo读取数据并处理数据后,MongoDB应该包含
{
"_id" : 1,
"value" : "aaa"
"value2" : "bbb"
}
如果可能,请提供一些虚拟代码。Mongo Hadoop连接器目前不支持此功能。如果愿意,可以在中打开功能请求。Mongo Hadoop连接器当前不支持此功能。如果愿意,可以在中打开功能请求。我通过扩展org.apache.hadoop.mapreduce.RecordWriter并重写此类的write方法完成了此操作 我通过扩展org.apache.hadoop.mapreduce.RecordWriter并重写此类的write方法实现了这一点
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相同
第四个参数是集合中多个文档的多次更新
设置在驱动程序类中
job.setOutputValueClassMongoUpdateWritable.class
查询:用于提供条件匹配条件
更新:用于在现有集合中添加新字段和值
MongoUpdateWritable:
第三个参数为upsert值,与mongodb相同
第四个参数是集合中多个文档的多次更新
设置在驱动程序类中
job.setOutputValueClassMongoUpdateWritable.class 我已经完成了,如果您正在使用spark,您可以查看 我已经完成了,如果您正在使用spark,您可以查看 不能将简单更新与$set basicDBObject一起使用吗?不能将简单更新与$set basicDBObject一起使用吗?