【发布时间】:2020-09-01 23:12:38
【问题描述】:
我正在尝试查询一个数据库,其中存储的实体具有不同的属性,我想用不同形状的查询从这些信息中检索一些字段(这就是使用无模式数据库的重点),但我没有运气CosmosDB。
由于我没有针对每种查询结果的类(我也不想要),我想将它们作为动态列表获取,但我不知道如何检索它们。我试过了:
var queryResultSetIterator = container.GetItemQueryIterator<dynamic>(queryDefinition, null, new QueryRequestOptions() { PartitionKey = new PartitionKey(idParticion), MaxItemCount = -1 });
List<dynamic> results = new List<dynamic>();
await foreach (dynamic item in queryResultSetIterator)
{
results.Add(item);
}
但我得到的项目是 System.Text.Json.JsonDocument 类型,所以它不能按预期工作;
如果我尝试使用 ExpandoObjects,我无法使用新的 System.Text.Json 序列化程序反序列化结果,因为截至今天它不支持反序列化为 ExpandoObjects:
results.Add(JsonSerializer.Deserialize<ExpandoObject>(item));
目前唯一可行的方法是使用旧的 Newtonsoft Json 序列化程序,但在我看来,将这两个库都存在于应用程序中似乎有点过头了,这意味着所有这些。
关于如何从 CosmosDB 获取动态投影的任何其他想法?
提前致谢!
【问题讨论】:
-
您的问题解决了吗?有进展吗?
标签: .net azure-cosmosdb azure-cosmosdb-sqlapi