查询结果格式与DocDb

时间:2016-04-08 12:11:47

标签: azure-cosmosdb

我在C#类中包装对DocDB集合的访问,并且在映射更高级的查询时遇到了一些麻烦。在尝试使用Query Explorer进行调试时,我注意到json返回了一些差异:

select * from collection

将返回

[{ "id" : "1", "names" : [ {"name" : "first"}, {"name" : "second"}]}]

,而

select c from collection c

将返回

[{ "c" : { "id" : "1", "names" : [ {"name" : "first"}, {"name" : "second"}]}}]

请注意结果如何嵌套在“c”属性下面!

当我需要创建使用命名选择的查询并将c#库映射结果返回到类型时,这种差异似乎会导致问题。这种查询的一个例子是

select c from collection c join n in c.names WHERE n.name = "first"

此查询必须使用'c'进行选择(*不允许),因此内部映射返回正确的结果数,但每个返回的项都未映射(可能是因为它期望json属性位于最顶层而不是在“c”属性下面。)

有谁知道如何获取DocumentQuery C#api(来自nuget版本1.5.3)以了解要映射的结果是否嵌套在命名结果属性下面?

1 个答案:

答案 0 :(得分:3)

SELECT clause下阅读后,我找到了 VALUE 关键字,该关键字只返回使c#驱动程序再次开心的json。

所以我的查询应该最终阅读

select value c from collection c join n in c.names WHERE n.name = "first"