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

使用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连接器目前不支持此功能。如

是否可以使用新数据更新现有MongoDB集合。我正在使用hadoop作业向Mongo读写数据。所需情景为:- 假设Mongo的第一个系列是

{ 
  "_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一起使用吗?