存在诸如[null]对象之类的null数组的Cosmos DB查询

时间:2019-07-09 00:43:53

标签: json azure-cosmosdb azure-cosmosdb-sqlapi

我需要从CosmosDB中查询具有空数据数组(例如[null])的项。

我尝试了类似这样的查询:SELECT TOP 1 c.id from c where ARRAY_CONTAINS(c.data 1,[[null]],true)。我的意图是查询类似这样的内容。

从c中选择TOP 1 c.id,其中ARRAY_CONTAINS(c.data 1,[[null]],true)

上述查询没有返回结果。

var sampledata = `{
  "id": 48259,
  "data": [
    [
      {
        "Elements": [
          {
            "QS": "",
            "TypeC": "C",
            "Id": 378,
            "R": false,
            "KTime": "0",
            "AllKVal": "",
            "KVal": "2",
            "IsGreen": false
          }
        ]
      }
    ],
    [
      null,
      {
        "Elements": [
          {
            "QS": "",
            "TypeC": "CM",
            "Id": 243,
            "R": "",
            "KTime": "0",
            "AllKVal": "",
            "V": true,
            "KVal": "2",
            "IsGreen": false
          }
        ]
      }
    ]
  ],
  "_ts": 1560943024
}`;

How data looks

1 个答案:

答案 0 :(得分:0)

我想我明白你的意思。让我们说,您的数据可能是这样的:

{
    "id": "48259",
    "data": [
        [
            {
                "Elements": [
                    {
                        "QS": "",
                        "TypeC": "C",
                        "Id": 378,
                        "R": false,
                        "KTime": "0",
                        "AllKVal": "",
                        "KVal": "2",
                        "IsGreen": false
                    }
                ]
            }
        ],
        [
            null
        ],
        [
            null,
            {
                "Elements": [
                    {
                        "QS": "",
                        "TypeC": "CM",
                        "Id": 243,
                        "R": "",
                        "KTime": "0",
                        "AllKVal": "",
                        "V": true,
                        "KVal": "2",
                        "IsGreen": false
                    }
                ]
            }
        ]
    ]
}

数据数组的元素为整个空数组:

enter image description here

或has元素包含空值和其他值。

enter image description here

如果是这样,您可以在SQL中使用join来处理它们两者。

SELECT distinct c.id from c 
join data in c.data
where ARRAY_CONTAINS(c.data,[null],true) 
or ARRAY_CONTAINS(data,[null],true) 

输出:

enter image description here