DocumentDB 查询 help/reference

DocumentDB Queries help/reference

编辑: 我看到对这个问题投了反对票,编辑我的问题以增加清晰度和可读性。

我来自 SQL 文档数据库查询语法的背景知识。我正在寻找以下 T-SQL 查询的文档数据库等效语法。任何帮助表示赞赏。

  1. Select * 来自 c 其中 c.header.TimeStampField >= 'Time Stamp Constant'

  2. Select * 来自 c 其中 Upper(c.stringifield) = "lowercase to uppercase"

  3. select count(1) from c --查找所有文档的计数

是否可以通过查询删除文档?像 RDBMS 查询(从 table 中删除?)

您的查询 #1 和 #2 应该完全按照指定的方式工作。

查询 #3 不可能。但是,文档的总大小在 x-ms-resource-usage 响应 header 的 documentsCount 属性 中返回。这是一项新功能,您正在使用的 SDK 可能支持也可能不支持。因此,您可以通过遍历所有行来计算所有文档的数量。 Here 是在存储过程中执行此操作的完整示例。或者,您可以执行 SELECT 1 FROM c 并带回所有 1 和 count/sum。

无法通过 SQL 中的查询删除文档。您可以在存储过程中执行此操作或使用客户端功能删除文档。在这两种情况下,您都需要先查询文档,然后一次删除一个文档。

  1. 您的查询已经适用于 DocumentDB。
  2. 您的查询是正确的,应该有效。然而,一个额外的优化是在同一个文档中存储一个单独的 属性 ,它包含所有大写字母并明确搜索它。此更改将使用索引而不是进行扫描。
  3. Larry 对 #3 的回答是解决问题的正确方法。

要进一步了解查询语言,您可以使用 playground @ https://www.documentdb.com/sql/demo

借助 DocumentDB 的最新聚合支持(2017 年 2 月),您现在可以生成类似以下内容的计数:

SELECT VALUE COUNT(1)
FROM mydocuments d

这也适用于过滤器。例如:

SELECT VALUE COUNT(1)
FROM mydocuments d
WHERE d.foo = "bar"

也支持 min/max/average/sum。