【问题标题】:DocumentDb JOIN not returning result if JOINED property doesn't exist如果 JOINED 属性不存在,DocumentDb JOIN 不返回结果
【发布时间】:2025-11-25 04:05:02
【问题描述】:

我的典型用户文档如下所示:

{
   "id": "SomeGuid",
   "firstName": "John",
   "lastName": "Smith",
   "pet": { "id": "anotherGuid", "name": "Fluffy" }
}

如果用户没有宠物,我什至不会将宠物属性保存在 DocumentDb 中,因此用户文档将如下所示:

{
   "id": "Guid123",
   "firstName": "Jane",
   "lastName": "Doe"
}

我想获取我的用户列表以及他们的宠物名,所以这是我的 SQL:

SELECT c.id, c.firstName, c.lastName, p.name
FROM c
JOIN p IN c.pet

此 SELECT 未返回任何数据。如果我删除 JOIN 并只获取用户信息,它就可以正常工作。

如何获取所有用户?如果他们有宠物,我应该得到宠物的名字,如果没有,没有宠物的名字。使用我的示例,我想得到一个如下所示的列表:

[
   { "id": "SomeGuid", "firstName": "John", "lastName": "Smith", "name": "Fluffy" },
   { "id": "Guid123", "firstName": "Jane", "lastName": "Doe" }
]

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    我能够通过不使用 JOIN 来实现我想要的。

    这是我的 SELECT,它给了我想要的东西:

    SELECT c.id, c.firstName, c.lastName, c.pet.name
    FROM c
    

    我得到的结果正是我想要的:

    [
       { "id": "SomeGuid", "firstName": "John", "lastName": "Smith", "name": "Fluffy" },
       { "id": "Guid123", "firstName": "Jane", "lastName": "Doe" }
    ]
    

    【讨论】:

      最近更新 更多