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"
     }
  }
}

这里的重点是:

如果我将我的 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 的变量。