我和neo4j一样也是Django的新手。我使用Django 1.4.5,neo4j 1.9.2和neo4django 0.1.8
我为person节点创建了NodeModel,并将其索引到'owner‘和'name’属性上。这是我的models.py:
from neo4django.db import models as models2
class person_conns(models2.NodeModel):
owner = models2.StringProperty(max_length=30,indexed=True)
name = mode
我在我的Neo4J数据库上使用正则表达式运行以下cypher查询,它应该可以正常工作,但仍会产生错误。有人知道这个查询出了什么问题吗?我使用的是Neo4J 2.0.1
MATCH (n)
WHERE n.name =~ 'Foo.*'
RETURN n;
> Expected 2013167 to be a java.lang.String, but it was a java.lang.Integer
我有一个Neo4j社区3.5.5,在这里我建立了一个包含火车站和车站之间线段的图形数据模型。站点和线路段是节点,连接是连接它们的关系。
我想命名一个起点和终点站和总结长度的所有铁路区段在两者之间。我尝试了下面的Cypher查询,但是Neo4j没有将line_section识别为节点类型。
match (n1:Station)-[:Connect]-(n2:Station)
where n1.Name='Station1' and n2.Name='Station3'
return sum(Line_Section.length)
我知道可以使用Neo4
我之前创建了一个图形数据库,我发现我的Person节点没有ID。是否可以为现有节点生成唯一的id?我看到当我使用neo4j浏览器时,有一个自动生成的图形视图ID,但该ID不在数据库中。 如果Cypher查询可以这样做,请让我知道: MATCH (p:Person)
WHERE NOT p.id
SET p.id = AUTO_GEN_ID
RETURN p 所以新的节点会被修改吗?
我对Neo4j中的Cypher查询的性能表示怀疑。情况是:我的图中的每个节点都有一个属性,我想计算具有相同属性的节点数。所以,我的基本查询是
match (n:NodeLabel)
with n.community as community, n.myid as myid
match (m) where m.community = community
return myid, count(m) as totcommunity
我在属性“社区”上创建了一个索引
create index on :NodeLabel(Community)
但是性能非常差:一个有200.000个节点的图需要很长的时间
我犯了一个与属性类型不一致的错误。对于"person“类型的节点,有些节点的"external_id”属性有一个字符串,有些节点有一个int属性。我想删除属性为字符串的所有节点。下面的查询运行,似乎给出了正确的答案。
MATCH (n:person)
WHERE TOSTRING(n.external_id) = n.external_id
RETURN count(n)
但是,当我尝试使用以下查询删除这些节点时,我得到了"Unknown identifier n.":
MATCH (n:person)
WHERE TOSTRING(n.external_id)
最近,我将我的Neo4j数据库升级到了V3 (3.0.6)。从那时起,我在尝试删除使用Cypher的节点时遇到了麻烦。这是升级后的一个新问题。他们的查询是:
MATCH (p) WHERE id(p) = 83624
OPTIONAL MATCH (p)-[r]-(n)
OPTIONAL MATCH (p)-[r2]-(n2)
WHERE NOT ('Entity' in labels(n2))
DELETE r, r2, p, n2
这将导致错误Unable to load NODE with id 83624。
使用RETURN而不是DELETE的确切查询返回节点。
我使用的是Neo4j 3.0.5。
我的查询如下所示:
MATCH (cd:ConnectionDay)-[c:Connection]->()
WHERE id(cd)= { id } AND c.departure <= { departure }
RETURN c
在我的图表中,Connection关系的数量非常高,我正在寻找一种方法来加快检索速度。有没有办法为离开属性创建索引?
我正在使用嵌入式Java API,所以不使用Cypher的解决方案也是可以的。
在neo4j 3.5中,我可以访问某些特定节点,如下所示:
match (b:SomeLabel) where b.MyFirstValue = 1 return b.Name
但是,我也希望像这样访问该属性:
match (b:SomeLabel) where b.myfirstvalue = 1 return b.Name
有没有办法在cypher中实现这一点,除非在确保所有属性名称正确大小写后重新插入所有数据?
我正在使用cytoscape插件(cypher查询)来可视化neo4j图db。我正在使用下面的查询来可视化它。输出显示了37个节点和连接,但节点和连接没有任何标签。 我正在使用以下密码查询: match (g: Gene) where g.symbol = 'TMPRSS2' or g.symbol='ACE2'
with g
match path=(g)<-[:IS_VARIANT_OF_GENE|DISEASE_ASSOCIATES_GENE]-()
return path 我如何才能可视化所有标签的网络。 我们非常感谢您的帮助。
我目前使用Neo4j,2.0+和密码来创建和保存会话。
我的项目有时需要每秒多次写入标记为“ChildSession”的节点,并且我注意到,当我在密码中“增量”ChildSession_ID时,我通常会有ChildSession_ID的跳过数字或相同的数字。
不确定对于我的需求,新4j/密码是否太慢,但我对此表示怀疑,因为内部Neo4j节点ID通常会增加。
The cypher command i'm using, to increment ChildSession is:
match (p:ChildSession) with count(p) as Total
Create
我们正在为未来的项目评估Neo4J。目前只是在尝试学习Cypher和它的功能。但是我认为应该非常简单的一件事到目前为止还不清楚。我希望能够看到任何给定节点的所有属性和它们的值。在SQL中,这将是这样的:
select * from TableX where ID = 12345;
我已经浏览了最新的Neo4J文档和大量的谷歌搜索,但到目前为止我一无所获。我确实找到了keys()函数,该函数将在字符串列表中返回属性名称,但这充其量是有用的。*我想要的是一个将返回属性名称和相应值的查询,如下所示:
name : "Lebron"
city : "Clev
我不知道为什么我要在Neo4j中创建一个图,它总是有不包含任何内容的节点,所以当使用For循环作为迭代器结果时,我得到了一些异常,比如:
'title' property not found for NodeImpl#0.
at org.neo4j.kernel.impl.core.Primitive.newPropertyNotFoundException(Primitive.java:184)
....
我该如何处理这个问题??我在考虑使用以node1为起点的Cypher查询,但我不知道如何执行此查询或在循环时忽略节点?
我正在尝试使用下面的Cypher查询在Neo4j中计算一个无向图的传递闭包("E“是图的每条边都有的标签):
MATCH (a) -[:E*]- (b) WHERE ID(a) < ID(b) RETURN DISTINCT a, b
我试图在一个有10k个节点和大约15万条边的图上执行这个查询,但即使在8小时后它也没有完成。我对此感到惊讶,因为即使是最简单的SQL解决方案也要快得多,而且我预计Neo4j对于这些标准图形查询会更高效。那么,我是否遗漏了什么,可能是对Neo4j服务器进行了一些调整,或者是编写查询的更好方法?
编辑
以下是对上述查询执行EXPLAIN的结果:
+--
您好,如何将此SQL查询转换为CYPHER查询?:
SELECT n.enginetype, n.Rocket20, n.Yearlong, n.DistanceOn,
FROM TIMETAB AS n
JOIN PLANEAIR AS p ON (n.tailnum = p.tailNum)
如果在使用查询创建任何关系或任何内容之前它是请求,请也写下并帮助。谢谢