MonogoDBはバッチアップサルトをサポートしていないようです。これは正しいです?MongoDBに一括アップロードを追加する。
もしそうでなければ、最も効率的な既存のAPIを使ってバッチupsertを追加する方法はありますか?バッチupsertはmongo dbにも意味がありますか?
MonogoDBはバッチアップサルトをサポートしていないようです。これは正しいです?MongoDBに一括アップロードを追加する。
もしそうでなければ、最も効率的な既存のAPIを使ってバッチupsertを追加する方法はありますか?バッチupsertはmongo dbにも意味がありますか?
upsertフラグを持つmongoimportというユーティリティがあります。何かのように
mongoimport -c myitems -d mydb --upsert items.json
これはおそらくあなたが探しているものを達成することができますか?
デフォルトは_idに基づいてアップサートすることですが、あなたはMongoDBの2.6にアップグレードする場合は、ここで
http://docs.mongodb.org/manual/reference/mongoimport/#cmdoption-mongoimport--upsertFields
文書--upsertFieldsフラグを使用すると、あなたがnew Bulk operationsの利点を取ることができることを変更することができます。
私は次の使用C#MongoDB.DriverについてはBulk.find(<query>).upsert().update(<update>);
Bulk.find(<query>).upsert().updateOne(<update>);
Bulk.find(<query>).upsert().replaceOne(<replacement>);
:
var writeModels = new List<WriteModel<T>>();
foreach (var entity in list)
{
var id = entity.Id;
if (id == null)
{
writeModels.Add(new InsertOneModel<T>(entity));
}
else
{
var filter = new ExpressionFilterDefinition<T>(x => x.Id == id);
var replaceModel = new ReplaceOneModel<T>(filter, entity);
writeModels.Add(replaceModel);
}
}
await getCollection().BulkWriteAsync(writeModels);
「バッチアップ」ってどういう意味ですか?既存のオブジェクトを更新(置換)しながら、まだ存在しないドキュメントを追加しますか? – mnemosyn
はい、ただし1つのバッチとして、1つずつではありません! 1つのドキュメントに対してupsertするsaveメソッドに似ていますが、ドキュメントバッチのバッチアップサットを行うことができます – iCode
このスレッドはあなたに支援を提供しますか: http://stackoverflow.com/questions/5143756/upsert-multiple -records-with-mongodb – Bill