我在带有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 '$'
但是我找不到任何解决方案。
答案 0 :(得分:1)
您似乎正在尝试对通过Mongo端点插入的文档使用SQL API。这就是造成$ t / $ v东西的原因。
混合和匹配Mongo和SQL API有点复杂,因此不建议这样做。
您可以按照以下顺序之一做某事,而没有特定的顺序。
[]
就可以在它们的开头使用$
来访问内容,例如因此:SELECT TOP 10 twttr["$v"].tweet["$v"].source FROM twttr
)我个人建议不要这样做,除非您必须这样做。如果您想使用SQL,建议您仅使用SQL并从#2开始使用。