Как сделать запрос к базе данных Cosmos и получить логическое значение, если элемент существует - PullRequest
0 голосов
/ 26 февраля 2019

Мои данные в базе данных Cosmos выглядят следующим образом:

{    
  id:1,    
  key:"USA",  
  states:["New York","New Jersey", "Ohio", "Florida" ]         
}

Я хочу проверить, существует ли состояние в документе.Пример: "Калифорния".Если он существует, то я хочу вернуть true, иначе false.Может ли кто-нибудь помочь мне с запросом, который извлекает мне логическое значение.

1 Ответ

0 голосов
/ 26 февраля 2019

Вы должны быть в состоянии использовать ARRAY_CONTAINS().Как правило, вы используете его в своем предложении WHERE, но вы также можете просто вернуть логическое значение напрямую.В вашем примере вы бы сделали что-то вроде:

SELECT ARRAY_CONTAINS(c.states, "California")
FROM c

Это приведет к чему-то вроде:

[
    {
        "id": "1",
        "key": "USA",
        "$1": true
    },
    {
        "id": "2",
        "key": "USA",
        "$1": false
    }
]

Вы также можете вернуть другие свойства вместе с логическим значением:

SELECT c.id, c.key, ARRAY_CONTAINS(c.states, "California")
FROM c

И если вы хотите убедиться, что у вас есть массив, определенный для свойств, которые вы проверяете:

SELECT c.id, c.key, ARRAY_CONTAINS(c.states, "California")
FROM c
WHERE IS_DEFINED(c.states)

Наконец: вы можете использовать псевдоним логического значения, чтобы он возвращал фактическое имя свойства вместо чего-токак $1:

SELECT c.id, c.key,
ARRAY_CONTAINS(c.states, "California") AS ContainsCalifornia
FROM c
WHERE IS_DEFINED(c.states)

И вы получите что-то вроде:

{
    "id": "1",
    "key": "USA",
    "ContainsCalifornia": true
},
{
    "id": "2",
    "key": "USA",
    "ContainsCalifornia": false
}
...