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

本文关键字:数据 json 行部 更新 驱动程序 何使用 官方 MongoDb | 更新日期: 2023-09-27 18:19:45

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

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

另请参阅:https://groups.google.com/group/mongodb-user/browse_thread/thread/b2162a80550124c7#