我尝试通过CYPHER使用Java在Neo4j中创建一些节点,更具体地说是使用JSON和http://hostname:7474/db/data/transaction/commit

我的测试应使用以下CYPHER语句创建一些节点:

MERGE (a:LABEL1 { name: 'nameNNN', version: 1001 })
SET a.PROP1='<data>'
RETURN id(a)


只要很小,例如一个或多个总和例如),测试将创建9或10个节点:

{errors=[], results=[{"data":[{"row":[10009]}],"columns":["id(a)"]}]}
{errors=[], results=[{"data":[{"row":[10010]}],"columns":["id(a)"]}]}
...
{errors=[], results=[{"data":[{"row":[10011]}],"columns":["id(a)"]}]}


然后开始返回:

{errors=[], results=[]}


如果重新启动测试,我会立即得到空结果。如果我重新启动Neo4j服务器,
我可以更新这9或10个节点,也可以用不同的名称创建9或10个节点,
然后我只得到空结果。

据我了解,每个语句都是单个事务(我对每个服务器请求执行一个合并)。

这是错误还是社区版本(2.1.6)的限制,或者我有什么问题吗?

最佳答案

对于Neo4j来说,这是在属性中存储大块Blob数据的极少数反模式之一。推荐的方法是将它们移动到适合大型Blob(例如Amazon S3等)的数据存储中,并将对它们的URI引用保留在Neo4j中。

因此,表示blob内容的节点具有uri属性,该属性指向外部blob存储。

10-05 21:21
查看更多