gpt4 book ai didi

azure - DocumentDb SELECT 与 JOIN 不返回任何内容

转载 作者:行者123 更新时间:2023-12-02 07:28:59 24 4
gpt4 key购买 nike

我在 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

但是以下内容没有返回任何内容。我不明白为什么,因为它看起来像一个非常简单的 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"

这将返回数组中的每个计时器:

[
{
"projectTimer": {
"id": 234,
"name": "My Project",
"startTime": "10:35 AM"
}
},
{
"taskTimer": {
"id": 789,
"name": "My Task",
"startTime": "10:45 AM"
}
}
]

请注意在查询中使用 VALUE,以去除包含的 t 变量。

关于azure - DocumentDb SELECT 与 JOIN 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42618905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com