Космос БД запрос для нулевого массива, как [нулевой] объект присутствует - PullRequest
1 голос
/ 09 июля 2019

Мне нужно запросить у CosmosDB элементы, которые имеют нулевой массив данных, например [null].

Я попытался выполнить запрос, подобный этому запросу, ВЫБЕРИТЕ ТОП 1 c.id из c, где ARRAY_CONTAINS (c.data 1 , [[null]], true).Мое намерение состоит в том, чтобы запросить что-то вроде этого.

SELECT TOP 1 c.id от c, где 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
}`;

Как выглядят данные

1 Ответ

0 голосов
/ 10 июля 2019

Я думаю, я понял ваше намерение.Допустим, ваши данные могут выглядеть следующим образом:

{
    "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 для работы с ними обоими.

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

...