N1QL查询具有过滤器WHERE myField < $value
。
通过实验,我发现Couchbase对类型的排序如下:布尔值<整数<字符串 例如,任何布尔值的计算结果都小于整数。任何整数都小于所有字符串。 ({ 我想避免这种类型强制。我希望 强制规则是什么?我该如何预防?9223372036854775807
(Long.MAX_VALUE
)的计算结果小于""
(空字符串)。)"A" < 1
和"A" > 1
为false
,并且不要从过滤器中返回此类值。 (而且,似乎在Javascript中,这两个表达式都应该是false
。)
答案 0 :(得分:2)
您已经找到N1QL的排序规则。这是更完整的说明:
https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/datatypes.html
如果要避免跨类型的这种比较,则可以使用TYPE()函数添加一个子句,以验证要比较的两个元素是否属于同一类型。
https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/typefun.html
因此,您拥有$A > 3
而不是拥有($A > 3) AND (TYPE($A) = TYPE(3))
。