Как запросить Cosmos DB и получить логическое значение, если элемент существует

Мои данные в Cosmos DB выглядят так:

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

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


person Sreekanth Jagaleti    schedule 26.02.2019    source источник
comment
Я откатил вашу правку. Когда вы изменили его, чтобы спросить о C #, вы полностью изменили смысл вопроса (на который я уже ответил). Не стесняйтесь задавать новый вопрос относительно вашей конкретной задачи C #.   -  person David Makogon    schedule 26.02.2019


Ответы (1)


Вы должны уметь использовать 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
}
person David Makogon    schedule 26.02.2019
comment
Спасибо Дэвиду за быстрый ответ. Извините, мой вопрос был непонятен. Мой актуальный вопрос: как я могу запросить из С #? - person Sreekanth Jagaleti; 26.02.2019
comment
Это ... на самом деле нехорошо - менять весь контекст вашего вопроса. Я ответил на ваш вопрос подробно, с примерами. Ваш вопрос не имеет ничего общего с C # (и это редактирование следует откатить, поскольку теперь это совершенно другой вопрос). К вашему сведению, через CreateDocumentQuery() вы можете просто передать всю строку запроса (или параметризовать ее) и проверить именно то, что я вам предоставил. Множество примеров выполнения SQL-запросов. Затем, если вы все еще боретесь, вы можете задать новый вопрос, показывая, что вы пытались сделать на C #, ожидаемый и фактический результат и т. Д. - person David Makogon; 26.02.2019