假设我有一个图,其中每个用户都有标签' user‘和属性'name’,根据Neo4j 2.0文档,我们可以使用下面的cypher命令创建索引
CREATE INDEX ON :user(name);
但是,如果使用START子句编写Cypher查询,如下所示:
start n=node:user(name='john') return n
那么我将得到以下错误
MissingIndexException: Index `user` does not exist
我的问题是如何首先定义索引的名称。我知道在Neo4j 2.0中,使用start子句是可选的。但是,如果
我希望从我的neo4j数据库中选择一个子图(S),并使用S上的另一个查询来查找两个给定节点是否连接。有没有一种在neo4j中编写查询的方法?我用的是node.js和Cypher。编辑:我正在做类似的事情,例如:
Match (u:User)-[:adds]->(y:Paper)-[:consistsOf]->(e:L2)-[]->(m:L3)
where u.username = 'test'
MATCH p=(m:L3)-[r:gives*1..4]->(n:L3)
...
谢谢
我有两个Neo4j Cypher查询,返回相同的结果:
#1完全基于属性过滤方法:
MATCH (dg:DecisionGroup {id: -3})-[rdgd:CONTAINS]->(childD:Vacancy )
WHERE any(id IN childD.`employmentIds` WHERE id IN [16])
AND any(id IN childD.`timeZoneIds` WHERE id IN [11])
AND any(id IN childD.`companyTypeIds` WHERE id IN [1])
AND (c
我是Neo4J上的新手。我使用Cypher从csv文件的导入创建节点,其中每一行都包含用户ID、姓名和电子邮件。
我使用下面这行代码:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///Users/Cam/Documents/Neo4j/default.graphdb/import/node_attributes.csv"
我是Neo4j和Cypher的新手,正在写我的学士学位论文,在社交网络的情况下,我将关系数据库与Neo4j图形数据库进行了比较。我已经在SQL和Cypher中定义了一些查询,以便在JMETER中通过JDBC和REST API进行性能测试。然而,我在声明Cypher查询以获取节点时遇到了问题,这些节点是某个节点的朋友的共同朋友。
我的第一种方法是这样的:
MATCH (me:Enthusiast {Id: 488})-[:abonniert]->(f:Enthusiast)-[:abonniert]->(fof:Enthusiast)<-[:abonniert]-(f) RET
我目前使用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 2.0文档中看到,START子句是可选的,并且
Cypher将尝试从查询中推断起始点。
我在实验中发现
START user = node(*)
MATCH (user:User)-[r:KNOWS]-(user2:User)
RETURN user.username AS username, collect(user2.username) AS username2
给出了与
MATCH (user:User)-[r:KNOWS]-(user2:User)
RETURN user.username AS username, collect(user2.userna
我对Neo4J相当陌生,在一个Cypher查询中有一个问题。
我通过Neo4J java编写密码查询,我的Neo4J数据库设计如下:
我有一个用户节点的属性,如id,姓名,年龄,电子邮件,性别和节点城市。每个用户都通过关系(生命)与城市节点(具有属性id、名称)相关。但是,在用户与城市没有关联的情况下,也可能出现这种情况。
现在,我的查询场景是这样的,我希望在一个查询中获取用户和他居住的城市的所有细节。
match p, c, p-[:lives]->c where p.type = 'com.Person' and c.type='com.City'
我的问题相当直截了当。我一直试图编写一个使用聚合函数- min()的Cypher查询。
我试图使用Neo4j 3.4中提供的新空间函数来获取与特定节点最近的节点。我的查询当前如下:
MATCH (a { agency: "Bus", stop_id: "1234" }), (b { agency: "Train" })
WITH distance(a.location, b.location) AS dist, a.stop_id as orig_stop_id, b.stop_id AS dest_stop_id
RETURN orig_s
我有一个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
在Neo4j的Cypher查询语言中,一个MATCH子句紧跟在另一个子句后面,如下所示:
MATCH (d:Document{document_ID:2})
MATCH (d)--(s:Sentence)
RETURN d,s
还是同一个MATCH子句中的逗号分隔模式?例如:
MATCH (d:Document{document_ID:2}),(d)--(s:Sentence)
RETURN d,s
在这个简单的例子中,结果是相同的。但是有没有什么“问题”呢?
我有一个Cypher查询,当前由depth-first-search(DFS, Neo4j default algorithm)获取数据
MATCH p1=(a)--(b)
WHERE a.profileId = '203'
OPTIONAL MATCH p2=(a)--(b)--(c)
WHERE a.profileId = '203'
OPTIONAL MATCH p3=(a)--(b)--(c)--(d)
WHERE a.profileId = '203'
RETURN DISTINCT a,b,c,d
LIMIT 500
我尝试过使
我在一个图中有大约15M个节点,它们的结构如下(图)
我运行一个Cypher查询,对遍历的每个关系执行计算:
WITH 1 AS startVal
MATCH x = (c:Currency)-[r:Arb*2]->(m)
WITH x, REDUCE(s = startVal, e IN r | s * e.rate) AS endVal, startVal
RETURN EXTRACT(n IN NODES(x) | n) as Exchanges,
extract ( e IN relationships(x) | startVal * e.rate) AS Re
尝试执行以下密码查询(该查询从neoclipse执行ok )
START a=node(*) MATCH a-[:Knows]->p WHERE (p.Firstname! = "Steve" ) RETURN p
使用以下语句从neo4jclient发出
protected void Populate()
{
var client = new GraphClient(new Uri("http://altdev:7474/db/data"));
client.Connect();
va
我使用来自Scala 2.11.1和Neo4J数据库2.0.3的ne4j-jdbc 2.0.2。虽然通过rest接口向Neo4J服务器发出Cypher查询非常有效,但在嵌入式数据库中使用Cypher查询会失败。在研究了一些Neo4J源代码后,我发现原因在于在ExecutionEngine内部调用执行时的Cypher API内部。我能做些什么来修复它?
def main(args: Array[String]) {
val db = new GraphDatabaseFactory().newEmbeddedDatabase("D:/Datenbanken/neo4j/testsnn
我有他们属于的users和groups。我有一个索引n:Group(name)
我想搜索属于一组用户的所有用户:"gr1“、"gr2”、"gr3“
他们属于哪些其他群体。
因此,我有以下查询: query:
MATCH (gr:Group) <--(us:User)--(gr2:Group)
WHERE gr.name in ["gr1","gr2"]
return distinct gr2
这里的问题是,我认为cypher不使用索引,因为查询太慢了。
我有2k个节点,50k个关系。以下查询耗时200到700毫秒(取决于缓存):
M
在具有几个节点和关系的Neo4j数据库中,我试图找出最“受欢迎”的用户(在本例中:参与大多数关系的节点):
START n=node:user('*:*')
MATCH (n)-[r]->(x)
RETURN n
ORDER BY COUNT(r) DESC
LIMIT 10
但是,此查询(Neo4j 1.9.2)导致以下错误:
ThisShouldNotHappenError
Developer: Andres声称:聚合不应该像这样使用。
org.neo4j.cypher.internal.commands.expressions.AggregationExpress
多个可选匹配,返回Neo4j 2.2.3中的以下错误。我使用的是Cypher 2.2解析器。**
"org.neo4j.rest.graphdb.RestResultException: null at NullPointerException“。在Neo4j 2.1.7中,同样的查询工作得很好。
**
match (user:user)-[k:SUBSCRIBED]->(package)
where package.startDate < 1439268888365 and package.endDate > 1439268888365
with
我有一个查询,它返回带有属性的对象列表。考虑具有如下结构的C#对象:
public class Neo4jResult {
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
}
查询返回一个名为"mycollection“的列,我可以将结果存储到如下所示:
public async Task<IEnumerable<Neo4jResult>> MyNeo4jQuery() {
var c