【问题标题】:Queries on Joins in Cosmos DB Sql APICosmos DB Sql API 中的联接查询
【发布时间】:2018-07-13 21:51:56
【问题描述】:

本文档包含一个针对 Cosmos DB SQL API 运行的示例查询

https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-query-sql-api#example-query-2

SELECT c.givenName 
FROM Families f 
JOIN c IN f.children 
WHERE f.id = 'WakefieldFamily'
ORDER BY f.children.grade ASC

使用https://www.documentdb.com/sql/demo

在我将 [0] 放入 order by 之前,我无法获得类似的示例。我刚得到 {}。注意我知道 URL 说 documentdb 但该页面上的页眉说 Cosmos DB

SELECT food.servings[0].amount
FROM ROOT food
WHERE food.id = "19015"
order by food.servings[0].amount

应该有效吗?

是否有某个文档涵盖了您可以针对此 API 运行的所有查询?

(额外信息)

(1) 转至https://www.documentdb.com/sql/demo

(2) 把这个查询放在它上面

SELECT food.servings[0].amount
FROM ROOT food
WHERE food.id = "19015"
order by food.servings[0].amount

它可以工作,但这个查询看起来不像 https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-query-sql-api#example-query-2 中的示例,它使用原始示例中不需要的“[0]”。

【问题讨论】:

  • 嗨,托尼。不知道你在找什么。你的意思是 sql 的示例订单不适合你吗?覆盖所有查询是什么意思?
  • 添加了一些我希望能解释的额外信息,为什么我的示例中需要 [0] 而原始示例中不需要?

标签: azure-cosmosdb


【解决方案1】:

这实际上是不支持的。您应该得到一个错误指示,但由于某种原因,查询默默地不返回任何结果。如果在 ORDER BY 子句中用别名 'c' 替换 'f.children',你会得到预期的错误:

SELECT c.givenName 
FROM Families f 
JOIN c IN f.children 
WHERE f.id = 'WakefieldFamily'
ORDER BY c.grade ASC

你应该得到这个错误:

Order-by over correlated collections is not supported.

【讨论】:

  • 谢谢。那是文档中的示例。是文档错误还是我试图对documentdb.com/sql/demo 使用错误的API? [0] 语法在哪里适合这个?
猜你喜欢
  • 2018-12-17
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-04
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多