我有一个 MongoDB 集合(“用户”),其中包含一个字典字段(“用户注册”)。
字段定义为:
BsonDictionaryOptions(DictionaryRepresentation.ArrayOfDocuments)]
public Dictionary<string, UserRegistration> UserRegistrations = new Dictionary<string, UserRegistration>();
它是一个字典,由一个键(字符串)和一个作为值的自定义对象组成。
这是它在 MongoDB 中的反映:
"UserRegistrations" : [{
"k" : "517ba4e1696b03108ccef51a",
"v" : {
"RegistrationDate" : ISODate("2013-07-21T18:57:42.589Z"),
"OtherInfo" : "123456test",
}
}],
当我使用 $AddToSet 时,如下例所示:
IMongoQuery query = Query.EQ("_id", new ObjectId(uid));
var kvp = new KeyValuePair<string, UserRegistration>("517ba4e1696b03108ccef51a", new UserRegistration()
{
RegistrationDate = DateTime.Now.ToUniversalTime(),
});
IMongoUpdate update = Update.AddToSet("UserRegistrations", kvp.ToBsonDocument());
collection.Update(query, update, UpdateFlags.Multi);
它不检查是否已经存在相同的键,从而导致 Dictionary 字段中的重复,这随后会导致 MongoDB C# 驱动程序中的反序列化错误。
如何确保不存在相同的密钥?
谢谢!