N1ql - > IN运算符不适用于其他条件

时间:2014-11-01 06:26:17

标签: node.js couchbase n1ql

当仅使用IN运算符时,以下查询正常工作 SELECT META().id FROM bucket_name WHERE description IN ['Item1','Item2']

但是,当我触发此查询时,它会给我一个空白的结果 SELECT META().id FROM bucket_name WHERE id = 123 AND description IN ['Item1','Item2']

我做错了什么或其他人遇到过同样的问题?

2 个答案:

答案 0 :(得分:6)

我认为你必须将你的“IN”条件纳入括号才能使其有效:

SELECT META().id FROM bucket_name WHERE id = 123 AND (description IN ['Item1','Item2'])

它与precedence level of the operators evaluation by N1QL处理器

有关

如果您使用EXPLAIN关键字运行它,则会显示它如何将条件相互关联。

e.g。

explain SELECT META().id FROM bucket_name WHERE id = 123 AND (description IN ['Item1','Item2'])

VS

explain SELECT META().id FROM bucket_name WHERE id = 123 AND description IN ['Item1','Item2']

答案 1 :(得分:2)

使用最新的N1QL开发人员预览(http://docs.couchbase.com/developer/n1ql-dp3/n1ql-intro.html),IN子句不需要加括号,因此这应该有效:

SELECT META(b).id FROM bucket_name b WHERE id = 123 AND description IN ['Item1','Item2']

您需要将存储桶名称(或别名)传递给META()我认为因为N1QL现在支持多个存储桶上的查询。