gpt4 book ai didi

neo4jclient - 使用 neo4jclient 确保唯一节点

转载 作者:行者123 更新时间:2023-12-04 02:29:08 38 4
gpt4 key购买 nike

使用neo4jclient创建节点时有没有办法确保唯一性?

此链接 transactions展示了如何使用 java 和事务来做到这一点,但我在 neo4jclient 中没有看到任何事务支持。我能够使用像这样的显式 Cypher 字符串查询来做到这一点:

"start n=node:node_auto_index(name={id}) 
with count(*) as c
where c=0
create x={name:{id}}
return c"

但这显然是一个黑客。有没有更好的办法?

最佳答案

Neo4j 2.0 和更高版本的 Neo4jClient 将提供事务支持。这个问题正在跟踪工作:https://bitbucket.org/Readify/neo4jclient/issue/91/support-cypher-transactions-integrated

但这并没有给你带来独特性...

Neo4j 没有唯一索引可以自动执行这个想法。 (我希望我们将来会在 Neo4j 2.0 标签中看到这一点,但现在还没有。)

您需要 a) 知道您正在创建的内容是独一无二的,或者 b) 首先检查。

你好像在走B路线。

事务允许您在单个事务操作中进行检查然后创建,但仍然可以通过网络进行多次调用。

您写出的 Cypher 文本实际上是首选:您在单个语句中进行检查和创建。我很想知道你为什么认为这是一个黑客。

您可以通过 Neo4jClient 执行此语句,例如:

var id = 123;
graphClient.Cypher
.Start(new { n = Node.ByIndexLookup("node_auto_index", "name", id)})
.With("count(*) as c")
.Where("c=0")
.Create("x={0}", new MyType { name = id })
.Return<Node<MyType>>("c")

部分 WithWhere如果语句更清晰,那就太好了,但现在它是有用的。

还有 Cypher 的 CREATE UNIQUE条款也可能涵盖您的情况。

关于neo4jclient - 使用 neo4jclient 确保唯一节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16476058/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com