在 Mongo 更新时使用词典而不使用包装器?
Use Dictionary on Mongo Update without wrapper?
我有一本字典,我想做一个更新插入,但我发现的唯一方法是用 .Set 将它包装到一个字段中,有没有办法将每个字典条目转换为一个字段?
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);
我创建了这个扩展方法来完成这项工作:
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;
}
我有一本字典,我想做一个更新插入,但我发现的唯一方法是用 .Set 将它包装到一个字段中,有没有办法将每个字典条目转换为一个字段?
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);
我创建了这个扩展方法来完成这项工作:
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;
}