DocumentDb SELECT 与 JOIN 不返回任何东西
DocumentDb SELECT with JOIN not returning anything
我在 DocumentDb 中的文档如下所示:
{
"id": 123,
"timers":
{
"projectTimer":
{
"id": 234,
"name": "My Project",
"startTime": "10:35 AM"
},
"taskTimer":
{
"id": 789,
"name": "My Task",
"startTime": "10:45 AM"
}
}
}
这里的重点是:
- "timers" 是对象 -- 不是数组
- 子对象也已设置,即 "projectTimer" 和 "taskTimer"
如果我将我的 SELECT 语句设置为以下,它会通过给我 projectTimer 和 taskTimer 子对象来工作
SELECT c.timers
FROM Collection c
WHERE c.id = 123
但是下面returns什么都没有。我不明白为什么,因为它看起来像一个非常简单的 JOIN:
SELECT t.projectTimer
FROM Collection c
JOIN t IN c.timers
WHERE c.id = 123
知道我哪里出错了吗?
问题是您正在尝试对非数组的对象执行 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"
return 数组中的每个计时器:
[
{
"projectTimer": {
"id": 234,
"name": "My Project",
"startTime": "10:35 AM"
}
},
{
"taskTimer": {
"id": 789,
"name": "My Task",
"startTime": "10:45 AM"
}
}
]
请注意在查询中使用 VALUE
,以去除包含 t
的变量。
我在 DocumentDb 中的文档如下所示:
{
"id": 123,
"timers":
{
"projectTimer":
{
"id": 234,
"name": "My Project",
"startTime": "10:35 AM"
},
"taskTimer":
{
"id": 789,
"name": "My Task",
"startTime": "10:45 AM"
}
}
}
这里的重点是:
- "timers" 是对象 -- 不是数组
- 子对象也已设置,即 "projectTimer" 和 "taskTimer"
如果我将我的 SELECT 语句设置为以下,它会通过给我 projectTimer 和 taskTimer 子对象来工作
SELECT c.timers
FROM Collection c
WHERE c.id = 123
但是下面returns什么都没有。我不明白为什么,因为它看起来像一个非常简单的 JOIN:
SELECT t.projectTimer
FROM Collection c
JOIN t IN c.timers
WHERE c.id = 123
知道我哪里出错了吗?
问题是您正在尝试对非数组的对象执行 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"
return 数组中的每个计时器:
[
{
"projectTimer": {
"id": 234,
"name": "My Project",
"startTime": "10:35 AM"
}
},
{
"taskTimer": {
"id": 789,
"name": "My Task",
"startTime": "10:45 AM"
}
}
]
请注意在查询中使用 VALUE
,以去除包含 t
的变量。