如何使用$ v和$ t在Azure门户上查询Cosmos DB

时间:2019-06-27 23:28:21

标签: sql azure azure-cosmosdb azure-cosmosdb-sqlapi

我在带有SQL API的Azure上有一个Cosmos数据库。我可以使用他们的Nuget包通过C#查询数据,但是从Azure门户> Cosmos DB>数据资源管理器运行查询时遇到错误。

我想获取$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"
        }
    }
]

预期结果:

我想看(最好将过滤器应用为仅查看失败)

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

我遇到类似的错误

Syntax error, invalid token '$'

但是我找不到任何解决方案。

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试对通过Mongo端点插入的文档使用SQL API。这就是造成$ t / $ v东西的原因。

混合和匹配Mongo和SQL API有点复杂,因此不建议这样做。

您可以按照以下顺序之一做某事,而没有特定的顺序。

  1. 使用Mongo进行查询
  2. 仅使用SQL API重新创建集合
  3. 查看以下有关如何针对Mongo编写SQL API查询的答案:Cosmos DB + pyDocumentDB + Databricks(您几乎不需要[]就可以在它们的开头使用$来访问内容,例如因此:SELECT TOP 10 twttr["$v"].tweet["$v"].source FROM twttr

我个人建议不要这样做,除非您必须这样做。如果您想使用SQL,建议您仅使用SQL并从#2开始使用。