首页 > 解决方案 > Couchbase N1QL ORDER by true 和不存在的字段

问题描述

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

[
  { 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

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

标签: couchbasen1ql

解决方案


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

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

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

推荐阅读