提供一些上下文信息:我想使用官方C#驱动程序将一些技术与MongoDB集成,但由于某些限制,我需要仅使用JSON字符串来集成它。因此,我构建一个简单的本机函数包装器,通过传递和接收JSON作为简单字符串来调用它们。
find
方法的示例:
public string find(string json)
{
BsonDocument query = BsonDocument.Parse(json);
var list = Collection.Find(query).ToListAsync().Result;
return list.ToJson();
}
P.S。:我知道使用异步方法作为同步方法的性能影响,但我别无选择。
这非常有效,问题在于更新/替换方法:
public string updateMany(string jsonFilter, string jsonUpdate)
{
BsonDocument filter = BsonDocument.Parse(jsonFilter);
BsonDocument update = BsonDocument.Parse(jsonUpdate);
UpdateResult r = Collection.UpdateManyAsync(filter, update).Result;
return r.ToJson();
}
这将返回字符串:{ "_t" : "Acknowledged" }
,它只告诉我UpdateManyAsync()
结果的类。该类公开了我想要放在JSON上的MatchedCount
和ModifiedCount
等属性,但是默认的序列化程序由于某种原因忽略它们(这些属性是只读的,因此应该忽略反序列化,但不是序列化。)
我尝试使用r.ToJson<UpdateResult>();
和r.ToBsonDocument<UpdateResult>();
,但结果相同。
我看到toJson()
有一些超载正在接收JsonWriterSettings
,IBsonSerializer
和BsonSerializationArgs
,所以可能其中一个拥有关于主题的一些配置,但我没有运气寻找它。
我认为我可以导入Json.NET DLL以查看它是否序列化所有属性,但我想在没有其他依赖项的情况下解决它。