如何在Couchbase查询中避免自动编码?

问题描述 投票:2回答:1

N1QL查询有一个过滤器WHERE myField < $value

从实验开始,我看到Couchbase按以下方式对这些类型进行排序:boolean <integer <string <JsonArray,尽管从我的角度来看它们不应该具有可比性。

例如,任何布尔值的值都小于任何整数;任何整数都小于所有字符串。 (9223372036854775807Long.MAX_VALUE)评估为低于""(空字符串)。)

我想避免这种类型强制。我希望"A" < 1"A" > 1false而不是从过滤器返回这些值。 (而且,似乎在Javascript中,这两个表达式都是false,因为它们应该是。)

什么是强制规则?我该如何防止这种情况?

json couchbase n1ql coercion
1个回答
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))

© www.soinside.com 2019 - 2024. All rights reserved.