DocumentDb中的文档如下所示:
{
"id": 123,
"timers":
{
"projectTimer":
{
"id": 234,
"name": "My Project",
"startTime": "10:35 AM"
},
"taskTimer":
{
"id": 789,
"name": "My Task",
"startTime": "10:45 AM"
}
}
}
这里的关键点是:
如果我将SELECT语句设置为以下内容,则可以通过向我提供projectTimer和taskTimer子对象来实现
SELECT c.timers
FROM Collection c
WHERE c.id = 123
但以下内容均未返回。我不明白为什么,因为它似乎是一个非常简单的JOIN:
SELECT t.projectTimer
FROM Collection c
JOIN t IN c.timers
WHERE c.id = 123
知道我犯了哪个错误吗?
答案 0 :(得分:0)
问题是你正在尝试对不是数组的东西进行JOIN
。
相反,如果您稍微重写了文档:
{
"id": "123",
"timers": [
{
"projectTimer": {
"id": 234,
"name": "My Project",
"startTime": "10:35 AM"
}
},
{
"taskTimer": {
"id": 789,
"name": "My Task",
"startTime": "10:45 AM"
}
}
],
}
然后你可以像JOIN
一样:
select value t
from collection c
join t in c.timers
where c.id = "123"
哪个会返回数组中的每个计时器:
[
{
"projectTimer": {
"id": 234,
"name": "My Project",
"startTime": "10:35 AM"
}
},
{
"taskTimer": {
"id": 789,
"name": "My Task",
"startTime": "10:45 AM"
}
}
]
请注意在查询中使用VALUE
来删除包含t
变量的内容。