2017-02-23 83 views
-1

我有一个字典,我想做一个upsert,但我发现的唯一方法是用.Set包装它到一个字段中,有没有方法可以将每个字典条目转换为字段?在没有包装的Mongo Update上使用Dictionary?

var data = new Dictionary<string, object>() { { "Test1", 1 }, { "Test2", 2 } }; 

var filter = Builders<BsonDocument>.Filter.Eq("_id", LoggerScope.Identifier); 
var update = Builders<BsonDocument>.Update 
    .Set() // 
    .SetOnInsert("InsertDate", DateTime.UtcNow); 
var options = new UpdateOptions { IsUpsert = true }; 

await _Collection.UpdateOneAsync(filter, update, options); 

回答

0

我创造了这个扩展方法来完成这项工作:

public static UpdateDefinition<TDocument> SetDictionary<TDocument, TKey, TValue>(this UpdateDefinition<TDocument> update, IDictionary<TKey, TValue> dict) 
    { 
     foreach (var field in dict) 
     { 
      update = update.Set(field.Key as String, field.Value); 
     } 

     return update; 
    } 
相关问题