我正在使用MongoDB 2,我想更新多个文档并将一个值processed:true
插入到集合中.但MongoDB c#api只允许我们更新多个记录或Upsert一条记录.
如何使用C#api解决这个问题?
PUG*_*PUG 16
之后Mongo 2.6,你可以做批量更新/ Upserts.以下示例使用c#驱动程序进行批量更新
MongoCollection<foo> collection = database.GetCollection<foo>(collectionName);
var bulk = collection.InitializeUnorderedBulkOperation();
foreach (FooDoc fooDoc in fooDocsList)
{
var update = new UpdateDocument { {fooDoc.ToBsonDocument() } };
bulk.Find(Query.EQ("_id", fooDoc.Id)).Upsert().UpdateOne(update);
}
BulkWriteResult bwr = bulk.Execute();
Run Code Online (Sandbox Code Playgroud)
对于使用MongoDB.Driver 2.0版的用户,可以使用BulkWriteAsync方法.
<!-- language: c# -->
// our example list
List<Products> products = GetProductsFromSomewhere();
var collection = YourDatabase.GetCollection<BsonDocument>("products");
// initialise write model to hold list of our upsert tasks
var models = new WriteModel<BsonDocument>[products.Count];
// use ReplaceOneModel with property IsUpsert set to true to upsert whole documents
for (var i = 0; i < products.Count; i++){
var bsonDoc = products[i].ToBsonDocument();
models[i] = new ReplaceOneModel<BsonDocument>(new BsonDocument("aw_product_id", products[i].aw_product_id), bsonDoc) { IsUpsert = true };
};
await collection.BulkWriteAsync(models);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22997 次 |
| 最近记录: |