标签: neo4j

cypher:在“merge … on create”中使用“foreach”

我在 stackoverflow 上的第一个问题 - 是的。

\n\n

如果图片尚不存在,则以下查询应创建图片。url(清楚地描述了图片)titletags(数组)作为参数传递。每张图片都有一些标签,用节点表示。它有效,但速度不快。

\n\n
MERGE (pic:Picture {url:{url}})\nON CREATE\n  SET pic.title = {title}, pic.created = timestamp()\n  FOREACH (tagname IN {tags} |\n    MERGE (t:Tag {name:tagname})\n    MERGE (pic)-[:tag]->(t)\n  )\n
Run Code Online (Sandbox Code Playgroud)\n\n

set(第 3 行)只有在新创建图片时才会执行 - 很好。

\n\n

foreach(第 4 行)在每种情况下都会被执行 - 不好。

\n\n

有什么办法可以在一次查询中解决这个问题吗?我希望只执行第 4-7 行on create(第 2 行),因为执行时间存在巨大差异。

\n\n

括号不起作用。

\n\n

我使用MERGE而不是CREATE UNIQUE因为我需要ON CREATE\xe2\x80\xa6 并且MERGE似乎更快。

\n\n

我也将感谢任何进一步的优化。

\n

neo4j cypher

1
推荐指数
1
解决办法
1014
查看次数

连接本地主机失败:7474;连接被拒绝。neo4j-server.properties 文件在哪里?

我正在尝试从 Mac OSx 上的 Rstudio 启动我的图表,通过 devtools 安装了 RNeo4j (对于 R 版本 3.1.2)“startGraph(” http://localhost:7474/db/data/ “)”,我收到了以下内容错误:

“函数错误(类型、消息、asError = TRUE):无法连接到 localhost:7474;连接被拒绝”

看起来是一个错误代码:ERR_CONNECTION_REFUSED 网上搜索,他们建议修改conf/neo4j-server.properties文件。但似乎无法找到文件来纠正它。

r neo4j r-neo4j

1
推荐指数
1
解决办法
2万
查看次数

Spring Data Neo4j - 乐观锁定

  1. 是否有 SDN 的 Google 小组,或者 StackOverflow 是询问有关 SDN 问题的唯一地方?

  2. 我在 Spring JIRA 上发现了有关使用 @Version 属性的乐观锁定的问题。

在实现这一目标之前,我如何使用典型的存储库模式来处理这个问题?

neo4j spring-data-neo4j

1
推荐指数
1
解决办法
603
查看次数

Neo4J中如何获取关系的方向?

我需要从给定节点找出所有相关节点。我还需要识别方向,是传入还是传出,加上每个相关节点上的ID、标签。以下是我正在尝试的查询。这样查询会有效吗?还有其他更简单的方法吗?

MATCH (o)<-[or]-(e)<-[ir]-(i) 
WHERE e.firstName='Sid' 
RETURN o,ID(o),TYPE(or),or,e,ID(e),TYPE(ir),ir,i,ID(i)
Run Code Online (Sandbox Code Playgroud)

通过上述查询,我​​能够识别出o传出节点和i传入节点。

java neo4j spring-data-neo4j

1
推荐指数
1
解决办法
2452
查看次数

在 Neo4j 中何时使用属性而不是标签?

我将回顾这个YouTube 教程“在现实世界中使用 LOAD CSV”。

本教程展示了如何获取 CSV(其中每一行都是针对某家银行的投诉)并将其建模为 Neo4j 字典。

执行此操作时,讲述人会在投诉节点上设置属性:

CREATE (complaint:Complaint {id: line.`Complaint ID`})
SET complaint.year= TOINT(date[2]),
     complaint.month= TOINT(date[0]),
     complaint.day = TOINT(date[1])  
Run Code Online (Sandbox Code Playgroud)

我对一个小问题感到困惑 - 是什么让这个日期信息更像是“属性”而不是标签?

是否可以对此进行建模,而不是在节点将此信息封装为标签而不是属性的情况下?在什么时候您需要其中之一而不是另一个?

neo4j cypher

1
推荐指数
1
解决办法
313
查看次数

py2neo:无法创建图形

我想尝试使用 py2neo,但甚至无法使用文档中的代码示例。例如,请参见此处。代码是:

from py2neo import Graph, Node, Relationship
g = Graph()
tx = g.begin()
a = Node("Person", name="Alice")
tx.create(a)
b = Node("Person", name="Bob")
ab = Relationship(a, "KNOWS", b)
tx.create(ab)
tx.commit()
g.exists(ab)
Run Code Online (Sandbox Code Playgroud)

它返回一些错误消息:

Traceback (most recent call last):
  File ".\test_py2neo.py", line 22, in <module>
    tx = g.begin()
  File "C:\Users\saran\AppData\Local\Programs\Python\Python35\lib\site-packages\py2neo\database.py", line 335, in begin
    return Transaction(self, autocommit)
  File "C:\Users\saran\AppData\Local\Programs\Python\Python35\lib\site-packages\py2neo\database.py", line 797, in __init__
    self.transaction = self.session.begin_transaction()
AttributeError: 'NoneType' object has no attribute 'begin_transaction'
Exception ignored in: <bound method Driver.__del__ of …
Run Code Online (Sandbox Code Playgroud)

python neo4j py2neo

1
推荐指数
1
解决办法
2007
查看次数

如果不存在则在 Neo4j 中创建关系,如果存在则更新属性值

我有一个具有三个属性的节点,比如创建的东西

create (a:item{type:'detergent', weight:'500g', 'quantity':322}) 
Run Code Online (Sandbox Code Playgroud)

另一个节点像

create (b:customer{id:'933B3'})
Run Code Online (Sandbox Code Playgroud)

count节点a与节点之间应该存在与属性的关系b

count = 1如果关系不存在,我想创建关系,否则通过向其添加 1 来更新其计数值,例如set relationship.count = relationship.count + 1

我可以使用MERGE,以及ON CREATEON MATCH此目的。但是,问题在于:MERGE 匹配整个模式,而我只想匹配节点 a 的两个属性而不是所有三个属性。

因此,从技术上讲,我想在

a:item{type:'detergent', weight:'500g'}b:customer{id:'933B3'}

这意味着,无论洗涤剂的数量如何,所有label = itemtype = 洗涤剂重量 = 500g的节点都应该与id = 933B3 的客户有关系。

如果我在节点 a 的两个属性上使用 MERGE,它不会在现有项目节点(具有 3 个属性)和客户节点之间创建关系,而是创建具有在 MERGE 中指定的属性的新节点。如上所述,如果发现关系已经存在,我还需要更新 count 属性。

如何匹配已存在节点的选定属性以在现有节点之间创建具有初始化属性值的关系,否则更新关系的属性值已存在?

merge neo4j cypher

1
推荐指数
1
解决办法
1592
查看次数

在 Neo4j 中按类型计算关系

我在数据库中有很多关系类型。如何在不使用的情况下按每种类型计算关系apoc

neo4j cypher

1
推荐指数
1
解决办法
1184
查看次数

Neo4j:如何查找给定节点标签的所有属性名称

在 Neo4j 中,有没有办法获取给定节点标签的所有属性的名称。有很多文章解释了如何为给定节点执行此操作,但我需要获取属于给定标签的所有节点的所有属性名称。

neo4j cypher neo4j-apoc

1
推荐指数
1
解决办法
841
查看次数

不再支持 Neo4j 过滤功能

我想比较两个列表,以便在第一个列表中找到不在第二个列表中的值并返回它们。提前感谢代码返回的人:不再支持过滤器是否有其他方法可以做到这一点

MATCH (cu:Customer{name: "myCustomer"})-[pu:PURCHASED]->(o:Order)-[*]->(cat:Category)
MATCH (b:Book)-[:IS_a]->(cat)
WITH COLLECT(DISTINCT pu.ISBN) AS purchasedbooks,COLLECT(DISTINCT b.ISBN) AS booksFromTheSameCategory
RETURN FILTER( n IN booksFromTheSameCategory WHERE NOT n IN purchasedbooks ) as listC
Run Code Online (Sandbox Code Playgroud)

filter neo4j cypher

1
推荐指数
1
解决办法
1039
查看次数

标签 统计

neo4j ×10

cypher ×6

spring-data-neo4j ×2

filter ×1

java ×1

merge ×1

neo4j-apoc ×1

py2neo ×1

python ×1

r ×1

r-neo4j ×1