如何将UpdateResult从MongoDB C#Driver转换为JSON

时间:2015-10-26 13:32:34

标签: c# json mongodb bson

提供一些上下文信息:我想使用官方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上的MatchedCountModifiedCount等属性,但是默认的序列化程序由于某种原因忽略它们(这些属性是只读的,因此应该忽略反序列化,但不是序列化。)

我尝试使用r.ToJson<UpdateResult>();r.ToBsonDocument<UpdateResult>();,但结果相同。

我看到toJson()有一些超载正在接收JsonWriterSettingsIBsonSerializerBsonSerializationArgs,所以可能其中一个拥有关于主题的一些配置,但我没有运气寻找它。

我认为我可以导入Json.NET DLL以查看它是否序列化所有属性,但我想在没有其他依赖项的情况下解决它。

0 个答案:

没有答案