我想制作一个通用方法,从json数据中对文档进行PARTIAL更新。json数据包含正在更新的POCO的字段的子集。我有这个:
public static void Update(MongoCollection collection, ObjectId id, string jsonData) {
// assume jsonData does not contain the id field.
var bsonDoc = BsonSerializer.Deserialize<BsonDocument>(jsonData);
IMongoUpdate updateDoc = new UpdateDocument("$set", bsonDoc);
collection.Update(Query.EQ("_id",id), updateDoc);
}
这几乎可行,但我的问题是,ObjectId类型的字段被反序列化为字符串,因为这就是它们在JSON中的表示方式。(它们已经在客户端使用javascript JSON2-lib进行了序列化)。
所以我的问题是:
1) 让一个通用的部分更新方法在官方C#驱动程序中处理json数据的最佳方法是什么?2) 使用BsonSerializer时,如何将poco字段正确反序列化为正确的类型,而不仅仅是字符串?
另请参阅:https://groups.google.com/group/mongodb-user/browse_thread/thread/b2162a80550124c7#