2

既存の MongoDB コレクションを新しいデータで更新することは可能ですか? Hadoop ジョブを使用して、書き込みデータを Mongo に読み込んでいます。必要なシナリオは次のとおりです:- Mongo の最初のコレクションが

{ 
  "_id" : 1,
  "value" : "aaa"
  "value2" : null
}

Mongo からデータを読み取ってデータを処理した後、MongoDB には次のものが含まれている必要があります。

{ 
  "_id" : 1,
  "value" : "aaa"
  "value2" : "bbb"
}

可能であれば、ダミーコードを提供してください。

4

4 に答える 4

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);

query : 条件(マッチング条件)を提供するために使用されます。

update : 既存のコレクションに新しいフィールドと値を追加するために使用されます。

MongoUpdateWritable : 3 番目のパラメータは upsert 値です (mongodb と同じ)

4 番目のパラメーターは、コレクション内の多数のドキュメントでの複数の更新です。

Driverクラスで設定 job.setOutputValueClass(MongoUpdateWritable.class);

于 2013-06-21T19:11:13.500 に答える
1

org.apache.hadoop.mapreduce.RecordWriterこのクラスの書き込みメソッドを拡張してオーバーライドすることで実現しました。

于 2012-07-25T06:19:36.427 に答える
0

私はそれをstratioで行いました。spark を使用している場合は、チェックしてみてください。

于 2016-10-28T07:38:39.270 に答える
0

現在、Mongo-Hadoop コネクタはこの機能をサポートしていません。必要に応じて、 MongoDB Jiraで機能リクエストを開くことができます。

于 2012-06-06T14:53:24.753 に答える