簡體   English   中英

使用Java-Hadoop連接器更新MongoDB中的現有集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM