如何在 Spring 引导和 Couchbase -N1QL 查询中使用 'IN' 运算符

How to use 'IN' opeartor in Spring boot & Couch base -N1QL query

我有一个 JSON 列表,我正在使用 N1QL 查询从中查找特定值。 当我仅在列表中只有一个值时尝试才有效。

但是如果列表中有多个值,我不会得到响应。

Json

"suppliers_list": [
    "767",
    "300767"
]
@Query("SELECT users.*,  "
+ "META(users).id as _ID, META(users).cas as _CAS FROM #{#n1ql.bucket}"
+ "users WHERE lower(type)='users' AND ANY usersupplist IN users.suppliers_list SATISFIES usersupplist IN [] END")
userRepository.findBySupplierList(String List)

usersDefObjList = userRepository.findBySupplierList("767"); //Working

usersDefObjList = userRepository.findBySupplierList("767,300767");  // Not Working

usersDefObjList = userRepository.findBySupplierList("'767','300767'");  //  Not Working

但在 CouchBase 查询中同样有效 window

SELECT users.*,META(users).id as _ID,META(users).cas as _CAS FROM TCI_DATA_MIG users WHERE lower(type)='users' and ANY usersupplist IN users.suppliers_list SATISFIES usersupplist IN ['767','300767'] END

请让我知道您在存储库 N1QL 查询中获取值以解决此问题的建议。

在 N1QL 右侧的 IN 子句需要 ARRAY。

如果您知道可以使用多少个元素

usersupplist IN [,,] 

如果 ARRAY 是动态的并且不知道您可以使用多少个元素并作为 ARRAY 传入。

usersupplist IN 
 =  [ "767", "300767" ]  i.e. JsonArray.from("767", "300767")

看看这个