从azure documentDB中的嵌入数组中选择单个字段

时间:2017-07-17 20:13:23

标签: azure select azure-cosmosdb nosql

我有一个看起来像这个样本的documentDB集合:

{
    "data1": "hello",
    "data2": [ 
        {
            "key": "key1",
            "value": "value1"
        },
        {
            "key": "key2",
            "value": "value2"
        }
}

实际上,数据有很多其他字段,嵌入式数组有一些数据非常大的字段。我需要查询数据,我关心小"键" data2数组中的字段,但我不需要大的"值"。我发现返回的所有值数据都会导致性能问题,但是如果我将所有数组中的数据排除在一起就会很快(因此数据大小就是问题)。

我无法找到一种方法只返回"键"但排除"值"在嵌入式阵列中。

我基本上想要SELECT r.data1, r.data2.key并将其返回为:

{
    "data1": "hello",
    "data2": [ 
        {
            "key": "key1"
        },
        {
            "key": "key2"
        }
}

但SELECT r.data2.key似乎无法实现,因为它在数组中

JOIN将导致它为每个" data2"返回每个文档的副本。数组元素,对我不起作用。我唯一的另一种选择是迁移数据并将我想要的数据放入自己的数组中,以便我可以选择整个对象。

这有可能是我无法弄清楚的吗?

1 个答案:

答案 0 :(得分:2)

麦克,

正如您所推测的那样,在DocumentDB支持子查询之前,如果没有自定义UDF,这是不可能的。如果您想沿着该路线前进,请参阅以下答案,以获取UDF可能必须查看的示例:

祝你好运!