Mit com.couchbase.client, java-client
Version 2.2.7
Ich habe es nicht gelungen, eine n1ql Abfrage Funktion zu erhalten, die eine IN-Anweisung mit mehreren Artikel finden Sie in meinem Beispiel Abfrage und Java-Code verwendet unterCouchbase parametriert N1QL Abfrage IN Anweisung
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";
Ich habe versucht, Einstellung ids
(') verwendet wird, (") und (`), wie:.
ids = "'123', '456'";
ids = "\"123\" , \"456\";
ids = "`123`,`456`";
Keine von diesen arbeiten, wenn es jedoch mehrere IDs, wenn es nur eine wie ids = "'123'"
ist es gut funktioniert auch meine Abfrage funktioniert wenn ich es benutze CBQ auf dem Terminal.
Meine Frage ist, wie kiste ich eine parametrisierte N1QL-Abfrage, die mehrere Elemente in einer IN-Anweisung nehmen kann?
die Klammern verlegt sein sollte „und (id IN ([$ ids])) " – Stavm