Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
827 views
in Technique[技术] by (71.8m points)

node.js - N1ql -> IN operator does not work with other conditions

The following query works just fine when only IN operator is used
SELECT META().id FROM bucket_name WHERE description IN ['Item1','Item2']

But when I fire this query it gives me a blank result
SELECT META().id FROM bucket_name WHERE id = 123 AND description IN ['Item1','Item2']

Am I doing something wrong or somebody else has faced the same problem?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think you have to take your "IN" condition into parenthesis to make it work:

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

It has to do with the precedence level of the operators evaluation by N1QL processor

If you run it with EXPLAIN keyword it will show how it links conditions against each other.

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']

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...