Azure cosmosdb 从多个模式中查询相同对象的Cosmos DB

Azure cosmosdb 从多个模式中查询相同对象的Cosmos DB,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,给出存储在Cosmos DB中的以下文档,如何获取每个子元素的FirstName字段为“Bob”的所有子元素/子元素?我正在尝试使用SQL查询语法,但没有找到将两种文档模式结果结合起来的正确方法 // Document 1 { "id": "document1", "Child": { "FirstName": "Bob", "LastName": "Smith" } } // Document 2 { "id": "docume

给出存储在Cosmos DB中的以下文档,如何获取每个子元素的FirstName字段为“Bob”的所有子元素/子元素?我正在尝试使用SQL查询语法,但没有找到将两种文档模式结果结合起来的正确方法

// Document 1
{
    "id": "document1",
    "Child": {
        "FirstName": "Bob",
        "LastName": "Smith"
    }
}

// Document 2
{
    "id": "document2",
    "Children": [
        {
            "Name": "Bob",
            "LastName": "Jones"
        },
        {
            "Name": "Sue",
            "LastName": "Jones"
        }
    ]
}
我试图编写一个查询,查找所有“Bob”子元素,以实现以下输出:

[
    {
        "FirstName": "Bob",
        "LastName": "Smith"
    },
    {
        "Name": "Bob",
        "LastName": "Jones"
    },
]

Cosmos db文档以json格式存储,不能用一个sql查询来平等地处理子属性(上级结构)和子属性(子结构)

则无法展平并放入一个对象中,请参见示例:

不显示
c.Child
。因此,恐怕您需要分别查询
Child
Children
,然后根据您的需求合并它们


我试着在这里解释。在一个查询中,sql是不可能的。例如,文档1不包含子数组,文档2包含子数组。在一个sql中,
C连接子项
。但是对于文档1,子连接nothing是nothing,因此不会提取任何结果。你可以试试


由于cosmos db不支持UNION功能,我仍然建议按照上面的建议分别查询并合并它们。

cosmos db文档存储为json格式,不能用一个sql查询来平等地处理子属性(上级结构)和子属性(子结构)

则无法展平并放入一个对象中,请参见示例:

不显示
c.Child
。因此,恐怕您需要分别查询
Child
Children
,然后根据您的需求合并它们


我试着在这里解释。在一个查询中,sql是不可能的。例如,文档1不包含子数组,文档2包含子数组。在一个sql中,
C连接子项
。但是对于文档1,子连接nothing是nothing,因此不会提取任何结果。你可以试试


由于cosmos db不支持UNION功能,我仍然建议按照上面的建议分别查询并合并它们。

所以您有两个不同的名称child和children?更重要的是,有些文档只有一个“child”元素,而其他文档在数组中有该元素。在这种情况下,“Child”指的是公共结构,而不是字段名。因此,您有两个不同的名称Child和children?更重要的是,有些文档只有一个“Child”元素,而其他文档在数组中有该元素。在这种情况下,“Child”指的是公共结构而不是字段名。我想知道我是否可以使用coalesce在Children元素不存在时尝试拉出Children元素?不,不幸的是,我没有找到更好的方法。我想知道当Children元素不存在时,我是否可以使用coalesce尝试拉出Child元素?不,不幸的是,我没有找到更好的方法。