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