0
我想制作一个通用方法来从json数据中对文档进行部分更新。 json数据包含正在更新的POCO字段的一个子集。我有这样的:MongoDb:如何使用官方C#驱动程序从json数据进行部分更新
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库中进行了序列化)。
所以我的问题是:
1)什么是作一般性的部分更新方法使用JSON数据的工作与官方C#驱动程序的最佳方式? 2)如何在使用BsonSerializer时将poco字段正确反序列化为正确的类型而不仅仅是字符串?
好了,不能前2小时回答我的问题,所以这里是为注释: – ssn 2012-01-07 13:03:29
好了,解决办法是先反序列化JSON到POCO。 然后用BsonDocumentWrapper包装和将其转换为一个BsonDocument: 因此,这将是这个样子,其中T是POCO类型: 牛逼DOC = JsonSerializer.DeserializeFromString(JSON); var wrapper = BsonDocumentWrapper.Create(doc); var bsonDoc = wrapper.ToBsonDocument(); IMongoUpdate updateDoc = new UpdateDocument(“$ set”,bsonDoc); –
ssn
2012-01-07 13:03:38