存在空数组(如 [null] 对象)的 Cosmos DB 查询

Cosmos DB query for null array like [null] object is present

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

我试过这样的查询 SELECT TOP 1 c.id from c where ARRAY_CONTAINS(c.data1, [[null]], true ).我的意图是查询这样的东西。

SELECT 来自 c 的前 1 c.id 其中 ARRAY_CONTAINS(c.data1, [[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

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

{
    "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
                    }
                ]
            }
        ]
    ]
}

数据数组有元素是整个空数组:

或者有元素包含空值和其他值。

如果是这样,您可以在 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) 

输出: