Использование com.couchbase.client, java-client
версии 2.2.7
я не смог получить n1ql работу запроса, который использует оператор IN с несколько элементов см мой пример запроса и Java код нижеCouchbase параметрироваться N1QL запрос В заявлении
public int getCountForDuration(Long startTime, Long endTime, String ids){
JsonObject placeHolders = JsonObject.create().put("ids", ids).put("startTime", startTime).put("endTime", endTime);
N1qlQuery query = N1qlQuery.parameterized(COUNT_STATEMENT, placeHolders)
N1qlQueryResult result = bucket.query(query);
...
}
public static final String COUNT_STATEMENT = "select count(*) as count " +
"from bucketName " +
"where docType = 'docId' " +
"and (id IN [$ids]) " + <----- OFFENDING LINE
"and publishTimestamp between $startTime and $endTime";
Я пробовал установка ids
используя ('), ("), и (`), такие как:.
ids = "'123', '456'";
ids = "\"123\" , \"456\";
ids = "`123`,`456`";
ни один из них не работают, когда есть несколько идентификаторов, однако, если есть только один такой как ids = "'123'"
она отлично работает и мой выполнение запросов если я использую его, используя CBQ на терминале.
Мой вопрос заключается в том, как я могу скомпоновать параметризованный запрос N1QL, который может принимать несколько элементов в инструкции IN?
неуместны скобки должны быть «и (идентификатор ([$ ид])) « – Stavm