azure - DocumentDB ORDER BY 删除未定义

标签 azure azure-cosmosdb

我有一个包含旧数据的数据集。我们正在按仅出现在较新文档中的字段进行排序。

当我按此字段排序时,仅返回具有此值的对象,即使它们传递了 WHERE 子句。

我们如何在具有该字段的对象的顶部获得一个排序集,而所有没有该字段的对象在最后都未排序?

我一直在尝试类似的方法,但它无效:

SELECT T.id, IS_DEFINED(T.createdDate) ? T.createdDate : "2000-01-01T00:00:00" AS createdDate FROM Themes T 
WHERE T.customerId = 43333
AND T.isDefault = false
AND (NOT IS_DEFINED(T.isArchived) OR T.isArchived = false)
ORDER BY createdDate ASC

我也尝试过:

SELECT T.id FROM Themes T 
WHERE T.customerId = 43333
AND T.isDefault = false
AND (NOT IS_DEFINED(T.isArchived) OR T.isArchived = false)
ORDER BY IS_DEFINED(T.createdDate) ? T.createdDate : "2000-01-01T00:00:00" ASC

最佳答案

如果缺少在文档中填充该字段缺失的位置,我知道的唯一方法就是返回所有数据并在客户端进行排序。

我想知道您是否可以按投影字段排序和/或是否可以在 DocumentDB 的 SQL 子集中使用 SQL 的大小写和值替换功能...如果可以,它们是否高效?

我的系统的瓶颈是 DocumentDB RU,因此我尝试在客户端执行尽可能多的操作,但我很想知道这在 DocumentDB 的 SQL 中是否可行且高效。

关于azure - DocumentDB ORDER BY 删除未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38791520/

相关文章:

azure - 如何在Azure DevOps中仅忽略1个分支策略?

azure - Azure 如何维护 APPLICATION 状态?

azure-cosmosdb - Cosmos DB 延续 token 大小影响查询是否返回新文档

c# - 当您不知道分区键时使用 DocumentClient.ReadDocumentAsync

c# - 通过列表中的对象属性进行 DocumentDB Linq 查询

Azure Functions HttpClient 根据请求没有已知这样的主机

azure - 名称或服务未知 - Azure 中的间歇性错误

c# - Azure Blob 403 禁止使用 SAS 创建和使用 BlobContainer

python - 超出语言工作线程重新启动运行时重试次数 :python. 关闭函数主机

c# - DocumentDB 中主键的最佳实践