【发布时间】:2017-01-05 12:20:54
【问题描述】:
我的存储桶中有一个包含 ID 列表 (childList) 的文档。 我想查询此列表并保持结果有序,就像在我的 JSON 中一样。我的查询就像(使用 java SDK):
String query = new StringBuilder().append("SELECT B.name, META(B).id as id ")
.append("FROM" + bucket.name() + "A ")
.append("USE KEYS $id ")
.append("JOIN" + bucket.name() + "B ON KEYS ARRAY i FOR i IN A.childList end;").toString();
此查询将返回我将转换为我的域对象的行并创建如下列表:
n1qlQueryResult.allRows().forEach(n1qlQueryRow -> (add to return list ) ...);
问题是输出顺序很重要。
有什么想法吗?
谢谢。
【问题讨论】:
-
您应该能够简单地将
ORDER BY子句附加到查询的末尾:developer.couchbase.com/documentation/server/current/n1ql/… -
列表是一个字符串列表。我们称它为 chlidList
。我需要 childList[0] 成为第一行,依此类推。如果我将使用 ORDER BY 子句,它将使用字符串顺序进行排序。 -
您是否总是从 1 个单个文档开始加入?如果是这样,为什么不执行 k/v 操作而不是 N1QL 查询呢?与 JOIN 相比,您将在获取 B 文档的顺序上获得更多控制权...
标签: couchbase n1ql couchbase-java-api nosql