MongoDb:如何使用官方C#驱动程序从json数据进行部分更新

时间:2012-01-07 07:46:48

标签: c# mongodb partial

我想制作一个通用的方法来从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字段正确地反序列化为正确的类型而不是字符串?