Как запросить базу данных Cosmos на портале Azure с помощью $ v и $ t - PullRequest
0 голосов
/ 28 июня 2019

У меня есть Cosmos DB на Azure с SQL API.Я могу запрашивать данные через C # с помощью пакета Nuget, но я получаю сообщение об ошибке при выполнении запроса из портала Azure> Cosmos DB> Data Explorer.

Я хочу получить значение $v и выполнить некоторую фильтрацию на основе этого.

Использование

SELECT c.id, c.Remarks FROM c

Я получаю результаты с вложенными объектами (см. результат ниже).Но мне нужно только одно значение из вложенного объекта.

Я попытался изменить синтаксис на

SELECT c.id, c.Remarks.$v FROM c

или

SELECT c.id, c.Remarks.v FROM c

или

SELECT c.id, c.Remarks/$v FROM c

но я получаю ошибку.

Текущие результаты:

[
    {
        "id": "e9f3ae8e47ab4bbca97dadf3ff1fe08c",
        "Remarks": {
            "$t": 2,
            "$v": "Success"
        }
    },
    {
        "id": "97bea2e9919c48f2bde83c11c50e8177",
        "Remarks": {
            "$t": 2,
            "$v": "Failure"
        }
    },
    {
        "id": "bb142e17b8184d5c84a21aa2e218e3be",
        "Remarks": {
            "$t": 2,
            "$v": "Success"
        }
    }
]

Ожидаемые результаты:

I 'я хотел бы видеть (и предпочтительно применять фильтр, чтобы видеть только ошибки)

[
    {
        "id": "e9f3ae8e47ab4bbca97dadf3ff1fe08c",
        "Remarks": "Success"
    },
    {
        "id": "97bea2e9919c48f2bde83c11c50e8177",
        "Remarks": "Failure"
    },
    {
        "id": "bb142e17b8184d5c84a21aa2e218e3be",
        "Remarks": "Success"
    }
]

Я сталкиваюсь с ошибками типа

Syntax error, invalid token '$'

, но не могу найти никакого решения.

1 Ответ

1 голос
/ 28 июня 2019

Похоже, вы пытаетесь использовать SQL API для документа, который был вставлен через конечную точку Mongo.Именно это и вызывает $ t / $ v.

Смешивание и сопоставление API-интерфейсов Mongo и SQL немного сложное и не очень рекомендуется.

Вы можете сделать одно из нескольких, но неособый порядок.

  1. Используйте Mongo для выполнения запросов
  2. Создайте заново свою коллекцию, используя только API-интерфейсы SQL
  3. Получите этот ответ о том, как писать запросы SQL API к Mongo: Cosmos DB + pyDocumentDB + Databricks (Вы должны сделать немного [], чтобы получить доступ к вещам с $ в начале, например: SELECT TOP 10 twttr["$v"].tweet["$v"].source FROM twttr)

Я лично рекомендую не делать # 3, если вам не нужно.Если вы хотите использовать SQL, я бы рекомендовал просто использовать SQL и перейти к # 2.

...