DocumentDB ORDER BY 删除未定义
DocumentDB ORDER BY removing undefined
我有一个包含遗留数据的数据集。我们正在按仅出现在较新文档中的字段排序。
当我按此字段排序时,仅返回具有此值的对象,即使它们通过了 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
如果不在缺少该字段的文档中填充该字段,我知道的唯一方法是 return 所有数据并在客户端进行排序。
我想知道您是否可以 ORDER BY 投影字段 and/or 是否可以在 DocumentDB 的 SQL 子集中使用 SQL 的大小写和值替换功能...如果可以的话, 他们有效率吗?
我的系统的瓶颈是 DocumentDB RU,所以我尝试尽可能多地做客户端,但我很想知道这在 DocumentDB 中是否可行且有效SQL。
在无模式数据库中,没有定义类型顺序的约定,更不用说排序时未定义的条目了。尽管如此,您的要求仍然有效。
目前在 DocumentDB 中对此的最佳解决方案是进行两部分查询 -
- 查找 NOT IS_DEFINED 文档
- 查询 ORDER BY
如果没有 isArchived 属性 的文档数量很少并且是固定的,那么准备该列表并将其保存在单独的文档中可能是个好主意,这样第一次查询就会快得多该文档是一次性构建的。您所需要做的就是通过 "id" 查询该文档以获取该元数据文档中的所有条目并首先检索它们。
我有一个包含遗留数据的数据集。我们正在按仅出现在较新文档中的字段排序。
当我按此字段排序时,仅返回具有此值的对象,即使它们通过了 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
如果不在缺少该字段的文档中填充该字段,我知道的唯一方法是 return 所有数据并在客户端进行排序。
我想知道您是否可以 ORDER BY 投影字段 and/or 是否可以在 DocumentDB 的 SQL 子集中使用 SQL 的大小写和值替换功能...如果可以的话, 他们有效率吗?
我的系统的瓶颈是 DocumentDB RU,所以我尝试尽可能多地做客户端,但我很想知道这在 DocumentDB 中是否可行且有效SQL。
在无模式数据库中,没有定义类型顺序的约定,更不用说排序时未定义的条目了。尽管如此,您的要求仍然有效。
目前在 DocumentDB 中对此的最佳解决方案是进行两部分查询 -
- 查找 NOT IS_DEFINED 文档
- 查询 ORDER BY
如果没有 isArchived 属性 的文档数量很少并且是固定的,那么准备该列表并将其保存在单独的文档中可能是个好主意,这样第一次查询就会快得多该文档是一次性构建的。您所需要做的就是通过 "id" 查询该文档以获取该元数据文档中的所有条目并首先检索它们。