我在我的存储桶中有一个包含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 ) ...);
问题是输出顺序很重要。
有什么想法吗?
谢谢。
答案 0 :(得分:0)
这里是一个没有N1QL的解决方案的粗略概念,只要你总是从单个A文档开始:
List<JsonDocument> listOfBs = bucket
.async()
.get(idOfA)
.flatMap(doc -> Observable.from(doc.content().getArray("childList")))
.concatMapEager(id -> bucket.async().get(id))
.toList()
.toBlocking().first();
您可能希望在map
之前提取另一个toList
来提取名称和ID,或者甚至可能执行您的域对象转换......
步骤如下:
List<JsonDocument>