2012-01-07 4 views
0

jsonデータからドキュメントのPARTIAL更新を行う一般的な方法を作りたいと思います。 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); 
    } 

が、私の問題は、それは彼らがJSONで表現されている方法ですので、型のObjectIdを持つフィールドは、文字列として非直列化されていることである:私はこれを持っています。 (これらは、クライアント側でjavascript JSON2のlibとシリアル化されています)。

は、だから私の質問は以下のとおりです。

1)公式のC#のドライバでJSONデータを扱う一般的な部分更新方法を作るための最善の方法は何ですか? 2)BsonSerializerを使用しているときに、pocoフィールドを単なる文字列の代わりに適切なタイプに正しく直列化解除する方法を教えてください。

+0

まあ、2時間前に、自分の質問に答えることができないので、ここではコメントの通りです: – ssn

+0

[OK]を、解決策は、最初のPOCOにJSONをデシリアライズすることでした。 はその後BsonDocumentWrapperでラップし、BsonDocumentにこれを変換します。 だから、TはPOCO型で次のようなもの、になります。 T DOCは= JsonSerializer.DeserializeFromString (JSON)を、 var wrapper = BsonDocumentWrapper.Create(doc); var bsonDoc = wrapper.ToBsonDocument(); IMongoUpdate updateDoc =新しいUpdateDocument( "$ set"、bsonDoc); – ssn

答えて

関連する問題