我正在使用Postman测试我的asp.net core 2.2 Web API。我手动编写了JSON,像这样(httppatch):
{
"query": "{\"name\": \"foo\"}",
"update": [ "{\"$set\":{\"name\":\"foo2\"}}","{\"$set\":{\"path\": \"foo2 path\"}}" ]
}
现在我在思考如何在客户端构建补丁体。
我的问题是,如何获取与此代码等价的JSON以使其看起来像我手动编写的那样?
var query = Builders<T>.Filter.Eq(e => e.name, "foo");
var updates = Builders<T>.Update.Set(e => e.name, "foo2").Set(e => e.Path, "foo2 path");
我猜这都是关于序列化的问题,你有什么想法怎样才能做到?
--更新--
我找到了这个:
var serializerRegistry = BsonSerializer.SerializerRegistry;
var documentSerializer = serializerRegistry.GetSerializer<T>();
var upList = updates.Render(documentSerializer, serializerRegistry);
但它只抓取最后一组它将所有组合成一个(我的错误,感谢@Simon Mourier指出我的错误!)
Builders<T>.Update.Set(e => e.name, "foo2").Set(e => e.Path, "foo2 path").ToJson()
这个你试过了吗? - Black Hole{ "$set" : { "name" : "foo2", "path" : "foo2 path" } }
这是预期的结果。 - Simon Mourier