我在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)以了解要映射的结果是否嵌套在命名结果属性下面?
答案 0 :(得分:3)
在SELECT clause下阅读后,我找到了 VALUE 关键字,该关键字只返回使c#驱动程序再次开心的json。
所以我的查询应该最终阅读
select value c from collection c join n in c.names WHERE n.name = "first"