Azure Cosmos DocumentDB - 从子数组中的1个属性返回数组

时间:2017-09-11 11:04:39

标签: arrays json azure azure-cosmosdb

我已经四处寻找,看看是否有人之前需要这个,但是找不到多少。

我在Azure DocumentDB集合中有以下json对象:

{
    personID: 1,
    name: "Bruce",
    surname: "Dickinson",
    items: [
        {
            itemID: 1,
            itemType: "A",
            name: 'Item 1'
        },
        {
            itemID: 2,
            itemType: "A",
            name: 'Item 2'
        },
        {
            itemID: 3,
            itemType: "B",
            name: 'Item 3'
        }
    ]

}

该系列中有很多人。 personID 2,3,4 ...... 100 .... 1000等等。

我想编写一个SQL查询来提取personID = 1的itemID数组和itemType =' A'的项目。我希望结果看起来像这样:

itemIDs: [
    1,
    2
]

或简单地说:

[
    1,
    2
]

有没有人曾尝试过这样做过?它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

拥有比我更多的SQL foo的人可能只知道使用SQL的方法,但我会使用用户定义的函数(UDF)来实现它。

这是SQL:

SELECT VALUE udf.getItemIDArray(c) FROM collection c WHERE <your clause>

这是UDF的样子:

function getItemIDArray (o) {
  output = [];
  for (item in o.items) {
    output.push(item.itemID)
  }
  return output 
}