我有一个文档集合:列表文档。文件的结构如下:
id,level,aoguid,parentguid,formalname,currstatus
. 此结构允许您创建地址树结构。也就是说:国家一级,城市二级,街道三级,依此类推到七级。有些级别可能是,也可能不是。我的任务是:形成包含完整地址和组成完整地址的部分数组的json。
{
"full Address": "Country city street house",
"parts": [
{
"id": 1,
"aoguid": 1,
"parentguid": 0,
"formalname": "country",
"currstatus": 0
},
{
"id": 2,
"aoguid": 2,
"parentguid": 1,
"formalname": "city",
"currstatus": 0
},
{
"id": 3,
"aoguid": 3,
"parentguid": 2,
"formalname": "street",
"currstatus": 0
},
{
"id": 4,
"aoguid": 4,
"parentguid": 3,
"formalname": "house",
"currstatus": 0
}
]
}
项目使用mongodb,而不是关系数据库,这使得任务变得复杂。但是我发现,使用jool框架,可以像sql一样进行java查询。我写了这个代码:
Seq<Document> seq1 = Seq.seq(listDocs).filter(
it -> isNull(it.get("currstatus")) || "0".equals(it.get("currstatus"))
);
Seq<Document> seq2 = seq1;
Seq<Document> seq3 = seq1;
Seq<Document> seq4 = seq1;
Seq<Document> seq5 = seq1;
Seq<Document> seq6 = seq1;
Seq<Document> seq7 = seq1;
seq1
.leftOuterJoin(seq2, (l1, l2) -> Objects.equals(l1.get("aoguid"), l2.get("parentguid")))
.leftOuterJoin(seq3, (l2, l3) -> Objects.equals(l2.v2.get("aoguid"), l3.get("parentguid")))
.leftOuterJoin(seq4, (l3, l4) -> Objects.equals(l3.v3.get("aoguid"), l4.get("parentguid")))
.leftOuterJoin(seq5, (l4, l5) -> Objects.equals(l4.v4.get("aoguid"), l5.get("parentguid")))
.leftOuterJoin(seq6, (l5, l6) -> Objects.equals(l5.v5.get("aoguid"), l6.get("parentguid")))
.leftOuterJoin(seq7, (l6, l7) -> Objects.equals(l6.v6.get("aoguid"), l7.get("parentguid")))
.parallel()
.forEach(it -> {
System.out.println("Some actions....");
});
但是这段代码不能编译。我怎样才能把它修好,使一切正常?
2条答案
按热度按时间piv4azn71#
找到了解决方案:
yzuktlbb2#
前面的解决方案也是正确的,可能对某些人有用,但我将列出我最终寻求的解决方案。这是最终版本。