Couchbase N1QL ORDER by true 和不存在的字段

Couchbase N1QL ORDER by true and field that doesn't exist

我正在尝试按有时存在有时不存在的字段进行排序。示例数据:

[
  { Name: Jeff, RegisteredUser: true },
  { Name: Jane },
  { Name: Jill, RegisteredUser: true },
]

我的查询是这样的:

SELECT a.* 
        FROM table a 
        WHERE AND a.DocType = "User"
        ORDER BY Lower(a.RegisteredUser) ASC

然而,当我使用上面的查询时,它根本没有正确排序(基本上什么都不做)。

确实有秩序。请注意 LOWER on MISSING 是 MISSING 并放在第一位, non-string 上的 LOWER 值为 NULL(因为 LOWER 只能在字符串上完成),它位于 MISSING 之后。在重复的值中,可以重复放置任何顺序,以避免提供更多的 ORDER BY 表达式。结帐 https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/orderby.html

您可以删除 LOWER,因为布尔字段不需要 lower。

SELECT a.* 
FROM table a 
WHERE AND a.DocType = "User"
ORDER BY a.RegisteredUser ASC;