Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 在节点上添加临时属性_Neo4j_Cypher_Spring Data Neo4j - Fatal编程技术网

Neo4j 在节点上添加临时属性

Neo4j 在节点上添加临时属性,neo4j,cypher,spring-data-neo4j,Neo4j,Cypher,Spring Data Neo4j,是否可以在节点上设置一个属性,并在一个cypher查询中删除它,而不会在Neo4j中导致实际的磁盘写入 例如,我尝试在这个查询中使用n作为差事复制n节点,但是一个SET on errad会导致一个SET on n,同样,REMOVE这样的属性在返回值中丢失 这是我在节点上创建瞬态属性的一种尝试 String q = "MATCH (owner)-[:POSTED]->n WITH owner, n, n as errand, CASE WHEN owner-[:RECOMME

是否可以在节点上设置一个属性,并在一个cypher查询中删除它,而不会在Neo4j中导致实际的磁盘写入

例如,我尝试在这个查询中使用n作为差事复制n节点,但是一个SET on errad会导致一个SET on n,同样,REMOVE这样的属性在返回值中丢失

这是我在节点上创建瞬态属性的一种尝试

String q = "MATCH (owner)-[:POSTED]->n WITH owner, n, n as errand, 
      CASE WHEN owner-[:RECOMMENDED]->n THEN 'BROADCASTED' 
      WHEN owner-[:POSTED]->n THEN 'POSTED' 
      WHEN owner-[:GOT_NOMINATED]->n THEN 'NOMINATED' 
      ELSE 'CONNECTED' 
      END AS relationship 
SET errand.meta = relationship 
REMOVE n.meta 
RETURN errand LIMIT 1";
但是,当我检查我的域对象以查看属性是否由Neo4j设置时,它返回null

public class Errand {
     private String meta;

     Boolean isMetaSet () {
          return meta != null;
     }
}
使用SDN Neo4j,我得到了我的差事对象

Errand single = template.query(q, null).to(Errand.class).singleOrNull();

System.out.println (single.isMetaSet());
返回false

答案是什么 是否适用于节点

我目前正在嵌入式模式下使用Neo4j和Neo4j,我的查询是使用Neo4jTemplate类运行的


请参见我在

上对类似问题的回答。您的查询根本不需要临时节点属性或特殊变量。(此外,正如@frobberoffits所说,你的方法是有缺陷的。)

以下查询消除了差事(这只是
n
节点的别名),还设置了
n.meta
属性:

MATCH (owner)-[:POSTED]->n
SET n.meta =
      CASE WHEN owner-[:RECOMMENDED]->n THEN 'BROADCASTED' 
      WHEN owner-[:POSTED]->n THEN 'POSTED' 
      WHEN owner-[:GOT_NOMINATED]->n THEN 'NOMINATED' 
      ELSE 'CONNECTED' 
      END
RETURN n.meta LIMIT 1

(由于您限制为1,因此无需使用
DISTINCT

我希望在尝试返回属性时,将可反序列化的单个节点返回到我的模型对象中。这会导致空指针异常,因为它在返回之前已被删除。我的cypher查询有问题吗?重新措辞我的问题请更新问题,以显示基于该查询填充差事对象的代码。您是否尝试过在WITH块中不绑定
n
两次,一次绑定到自身,一次绑定到
差事
?您的回答似乎偏离了问题。你能看看我们如何在Neo4j中的节点上设置临时属性吗?这与在Neo4j中创建任意变量完全不同,@FrobberOfBits回答了这个问题。问题的主题是关于临时节点属性,而不是变量——它们是完全不同的东西。此外,问题的第一个链接指向一个问题,该问题的公认答案与节点属性有关。最后,问题中提供的查询实际上不需要做任何事情来返回单个
关系
值,因此我提供了一个更直接的查询。你是说你的整个问题实际上是在问如何设置
meta
属性吗?我已经修改了我的答案来实现这一点。一个节点n在数据库中有三个持久化的属性。您想向节点添加第四个临时属性元,该属性元仅在返回的节点中可见,而在数据库中不可见。我们如何操作?