我有一个如下的Neo4j Cypher查询:
在我的SDN 4项目中,我希望能够检索到一个
结果包含了正确的关系型数据库(RDBMS)的标准(2个标准),以及非关系型数据库(NoSQL)的标准(3个标准),但是特征集合却错误了。我希望这两个记录都有一个空的特征列表(0个元素),因为这些节点没有相关的特征。但是在第一个记录中,我有两个空特征(与标准列表长度相同),在第二个记录中有三个空特征。
我做错了什么,如何解决?
MATCH (parentD:Decision)-[:CONTAINS]->(childD:Decision)
WHERE id(parentD) = {parentDecisionId}
WITH childD, parentD
OPTIONAL MATCH (parentD)<-[:DEFINED_BY]-(c:Criterion)<-[:VOTED_ON]-(vg:VoteGroup)-[:VOTED_FOR]->(childD)
OPTIONAL MATCH (parentD)<-[:DEFINED_BY]-(ch:Characteristic)<-[:SET_ON]-(v:Value)-[:SET_FOR]->(childD)
WITH childD, {criterion: c, weight: vg.avgVotesWeight} AS weightedCriterion, {characteristic: ch, value: v.value} AS valuedCharacteristic
RETURN childD AS decision, collect(weightedCriterion) AS weightedCriteria, collect(valuedCharacteristic) AS valuedCharacteristics
在我的SDN 4项目中,我希望能够检索到一个
List<DecisionMatrix>
列表。@QueryResult
public class DecisionMatrix {
private Decision decision;
private List<WeightedCriterion> weightedCriteria;
private List<ValuedCharacteristic> valuedCharacteristics;
}
@QueryResult
public class WeightedCriterion {
private Criterion criterion;
private Double weight;
}
@QueryResult
public class ValuedCharacteristic {
private Characteristic characteristic;
private Object value;
}
现在,此查询返回一个正确的标准列表,但是特征元素为空的列表是错误的。
例如,我没有任何符合此查询条件的特征,但结果中我可以看到以下结构,其中有两条记录:
RDBMS : [{criterion=Node[161], weight=4.333333333333333}, {criterion=Node[160], weight=2.1666666666666665}] : [{characteristic=null, value=null}, {characteristic=null, value=null}]
NoSQL : [{criterion=Node[160], weight=4.333333333333333}, {criterion=Node[161], weight=2.5}, {criterion=Node[162], weight=4.2}] : [{characteristic=null, value=null}, {characteristic=null, value=null}, {characteristic=null, value=null}]
结果包含了正确的关系型数据库(RDBMS)的标准(2个标准),以及非关系型数据库(NoSQL)的标准(3个标准),但是特征集合却错误了。我希望这两个记录都有一个空的特征列表(0个元素),因为这些节点没有相关的特征。但是在第一个记录中,我有两个空特征(与标准列表长度相同),在第二个记录中有三个空特征。
我做错了什么,如何解决?