![](/img/trans.png)
[英]Update collection in MongoDb via Apache Spark using Mongo-Hadoop connector
[英]Update an existing collection in MongoDB using Java-Hadoop connector
是否可以使用新數據更新現有的MongoDB集合。 我正在使用hadoop作業將寫入數據讀取到Mongo。 所需方案為:-說Mongo的第一個收藏是
{
"_id" : 1,
"value" : "aaa"
"value2" : null
}
從Mongo讀取數據並處理數據后,MongoDB應該包含
{
"_id" : 1,
"value" : "aaa"
"value2" : "bbb"
}
如果可能,請提供一些偽代碼。
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);
query :用於提供條件(匹配條件)。
update :用於在現有集合中添加新字段和值。
MongoUpdateWritable :第三個參數是upsert值(與mongodb相同)
第四個參數是集合中許多文檔中的多次更新。
在Driver類中設置job.setOutputValueClass(MongoUpdateWritable.class);
我通過擴展org.apache.hadoop.mapreduce.RecordWriter
並覆蓋此類的write方法來完成此操作。
Mongo-Hadoop Connector當前不支持此功能。 您可以根據需要在MongoDB Jira中打開功能請求。
我已經完成了分層工作 ,如果您正在使用spark,則可以檢查一下!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.