我试图删除一个关系,这个记录很少的错误出现了。
查询:
MATCH ()-[r:SendTo]-(n:Wallet)
WHERE NOT ()-[:BelongTo]->(n)
DELETE r
RETURN r
整个错误输出:
Exception in thread "main" org.neo4j.driver.v1.exceptions.value.NotMultiValued: NULL is not a keyed collection
at org.neo4j.driver.internal.value.ValueAdapter.get(ValueAdapter.java:192)
at basicANeo4j.Importer.<init>(Importer.java:213)
at basicANeo4j.Importer.main(Importer.java:246)
当我检查相应的关系时,没有属性为null:
<id>:595 value_bitcoin:20000000000outputIndex:defaultuniqueReferenceTran:bcaeee45968b5a08c88ed7a0d90a1275728eda356013465408197e9f77c634daNULLtranHashString:bcaeee45968b5a08c88ed7a0d90a1275728eda356013465408197e9f77c634datime:2016-01-01T22:55:26type:pubkeyhashvalue_dollar:86554.0estChanAddr:3KgtbGgaX2ngstNpvyv7LwpHSweVeqGbpM
我查看了ValueAdapter.class,这是相关的代码:
@Override
public Value get( String key )
{
throw new NotMultiValued( type().name() + " is not a keyed collection" );
}
没有任何文档,它根本没用。
答案 0 :(得分:2)
答案 1 :(得分:1)
我认为这是因为你试图返回一个null对象,因为你先删除它。我会尝试这个
MATCH ()-[r:SendTo]-(n:Wallet)
WHERE NOT ()-[:BelongTo]->(n)
DELETE r
RETURN 'success'
您可以返回一个字符串,如果您对哪个钱包删除了关系感兴趣或者您无法返回任何内容,则可以返回n。
答案 2 :(得分:0)
我刚刚意识到密钥集合的错误来自于:在迭代记录时,我尝试打印关系的属性,而该属性不存在于此关系中。 (我从代码的另一部分复制它而不检查它,并确信这是问题的查询。所以我错过了。)