标签: neo4j

无法启动 Neo4j - 无法绑定到端口

我使用的是 mac os,每次尝试启动 Neo4j 时都会收到此错误

无法绑定到端口。您是否在此计算机上运行另一个 Neo4j 进程?

尝试检查默认端口

lsof -i :5001

但没有任何东西绑定到该端口

检查活动监视器的相同结果表明 neo4j 未运行

neo4j

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

Neo4j 中 Edge 的权重

我是 neo4j 的新手。我希望通过显示关系权重来构建我的图表。这是我的命令:

CREATE (origin)-[c:CONNECTED_TO { frequency: row[2] }]->(destination)
Run Code Online (Sandbox Code Playgroud)

但我只看到 CONNECTED_TO

谢谢

neo4j

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

Cypher 查询迭代特定类型的所有节点并分组相关节点

有人可以帮助 neo4j 新手(这是我的第二天!)解决以下问题吗?

我有一个数据库,其中包含所有玩过游戏会话 (S) 的玩家 (P) 以及他们获得的分数。有无数个S,我们称它们为S1、S2、S3…等。还有无数个P,P1、P2、P3…等。

每个会话都有玩家,例如

(P)-[:已播放]->(S)

每个会话都有不同数量的玩家,从 2 到 10 人不等。

我想做的是访问每个会话,获取该会话的每个玩家,然后根据分数对他们进行排名。首先需要将玩家按照得分排序,然后排名,每个得分高于前一个玩家的玩家具有 BEAT 关系。通常,我会使用 FOREACH 循环,但我不知道如何对 Cypher 执行相同的操作。

例如,S1 有玩家 P1、P3 和 P5。如果 P3 得到 100,P1 得到 70,P5 得到 30,我想创建以下关系:

(P3)-[:BEAT]->(P1)-[:BEAT]->(P5)

我需要为每个会话执行此操作。解决这个问题的最佳方法是什么?

问候,

foreach batch-processing neo4j cypher

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

Neo4j:使用 cUrl 执行查询

有很多使用 cUrl 和 Neo4j 来执行查询的示例,但我无法让它工作。例如: https: //neo4j.com/blog/export-csv-from-neo4j-curl-cypher-jq/

操作系统:Windows 数据库:Neo4j 社区 3.1.1 cUrl:7.53.1

"D:\Programme\Tools\curl\curl.exe" -H "Content-Type: application/json" -d '{"statements":[{"statement":
"match (n) return count(n)"}]}' http://localhost:7474/db/data/transaction/commit
Run Code Online (Sandbox Code Playgroud)

结果:

{"results":[],"errors":[{"code":"Neo.ClientError.Request.InvalidFormat","message":"Unable to deserialize request: Unexpe
cted character (''' (code 39)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [
Source: HttpInputOverHTTP@18463df6; line: 1, column: 2]"}]}
Run Code Online (Sandbox Code Playgroud)

rest curl neo4j

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

春季数据| Neo4J | 以正确的顺序查询路径

版本:

<dependency>
            <groupId>org.neo4j</groupId>
            <artifactId>neo4j-ogm-core</artifactId>
            <version>2.1.1</version>
        </dependency>

        <dependency> <!-- If you're using the HTTP driver -->
            <groupId>org.neo4j</groupId>
            <artifactId>neo4j-ogm-http-driver</artifactId>
            <version>2.1.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-neo4j -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-neo4j</artifactId>
            <version>4.2.0.RELEASE</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

这是我的实体:

@Data
@NodeEntity
@EqualsAndHashCode(exclude = {"operatedByBuses"})
@ToString(of = {"name"})
public class BusStop {
    @GraphId
    private Long graphId;

    @Index(unique = true, primary = true)
    private String name;

    private String pincode;

    private String landmark;

    private String[] latlong;

    @Relationship(type = "OPERATED_BY")
    private Set<OperatedByBus> operatedByBuses = new HashSet<>();
}

@Data
@RelationshipEntity(type = "OPERATED_BY")
@ToString(of = "displayName")
public …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher spring-data-neo4j-4 neo4j-ogm spring-data-neo4j-5

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

neo4j:如何从路径仅返回特定属性

我匹配某些路径,并且希望返回该路径。但我不需要整个节点,我只需要它们的 ID。我试过:

match path = 
return path {id}
Run Code Online (Sandbox Code Playgroud)

但我收到语法错误

neo4j graph-databases cypher

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

作为变量的关系类型

我希望关系标签是“xxxyyy”节点的组合,甚至是 xxx_yyy,“+”是字符串连接或将变量设置为 x = a.name + b.name 但我尝试或查找的失败。

关系标签中没有出现引号或美元符号,可以节省我大量的打字时间。

MATCH (a:book),(b:story)
WHERE a.Name = "xxx" AND b.Name = "yyy"
CREATE (a)-[r:a.name+b.name]->(b)
RETURN r
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

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

Neo4j:Neo4j 中是否存在“不包含”?

你知道 Neo4j 中是否存在“不包含”吗?

例如:

LOAD CSV WITH HEADERS FROM 'file:///animal.csv' as a fieldterminator "|"
match (b:Animals{animal:a.type})
where not a.type contains 'x' or not a.type contains 'abc'
set b.type=a.type
Run Code Online (Sandbox Code Playgroud)

不幸的是,通过这种方式,代码不起作用。

neo4j cypher

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

Neo4j 密码查询关系计数过滤

我有一个 neo4j 数据库架构,如下所示:

(a:Author)<-[r:HAS_AUTHOR]-(n:Article)-[rel:HAS_DESCRIPTOR]->(d:Descriptor)
Run Code Online (Sandbox Code Playgroud)

我想做一个查询,显示作者和描述符之间的链接,筛选出多次发表的作者 (count(r)>1) 和出现在多篇文章中的描述符 (count(rel)>1) )

这是我写的查询:

MATCH (a:Author)<-[r:HAS_AUTHOR]-(n:Article)-[rel:HAS_DESCRIPTOR]->(d:Descriptor)
WITH a,count(r) as cnt WHERE cnt>1
MATCH (a:Author)<-[r:HAS_AUTHOR]-(n:Article)-[rel:HAS_DESCRIPTOR]->(d:Descriptor)
WITH d,count(rel) as cnt1 WHERE cnt1>1
MATCH (a:Author)<-[r:HAS_AUTHOR]-(n:Article)-[rel:HAS_DESCRIPTOR]->(d:Descriptor)
RETURN * limit 100
Run Code Online (Sandbox Code Playgroud)

它似乎没有达到我的预期。我仍然看到链接到一篇文章的作者或描述符。

请注意,关系计数应仅在查询上下文中考虑(即:限制为 100,所有作者都应链接到查询输出图中的多篇文章)。

这是编写此查询的正确方法吗?谢谢

编辑

我很抱歉说得不够清楚。

如果我运行一个显示所有作者-文章-描述符图的简单查询,我可以得到下图中的一些场景。

在所有图像中,黄色节点是文章,绿色节点是作者,粉色节点是描述符。

场景 1:一篇文章中唯一提及该描述符。我想过滤掉那些只在一篇文章中提到的描述符。

在此输入图像描述

场景 2:一个描述符被多篇文章提及,但其作者未发表任何其他文章。我想过滤掉那些只发表过一篇文章的作者

在此输入图像描述

这两个过滤器应该应用于子图级别。例如:如果我过滤到特定的描述符类型,那么这个新子图中应该满足两个条件(作者和描述符有多于一篇文章)。

建议的第一个查询生成如下图所示的图表:

MATCH (a:Author)
WHERE size((a)<-[:HAS_AUTHOR]-()) > 1
MATCH (a)<-[:HAS_AUTHOR]-(n:Article)-[:HAS_DESCRIPTOR]->(d:Descriptor)
WITH a, d, collect(n) as articles
WHERE size(articles) > 1
RETURN a, d, articles
Run Code Online (Sandbox Code Playgroud)

collect(n) 作为 a,d 对的文章迫使作者在同一描述符上发布两次,这是不可取的。我希望允许一位发表过关于 2 个不同描述符的论文的作者出现。 在此输入图像描述

建议的第二个查询生成如下图所示的图表:

MATCH (d:Descriptor)
WHERE size((d)<-[:HAS_DESCRIPTOR]-()) > …
Run Code Online (Sandbox Code Playgroud)

filtering neo4j cypher

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

Neo4j 列表匹配

因此,在 Neo4j 中,如果您有各种节点,并且它们具有值为 1 的属性,如下所示:

n.stringProp = "something"
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用 MATCH 查询来获取符合查询列表中任何属性的各种节点,例如

MATCH (n) 
WHERE n.stringProp IN ["something", "somethingElse", "etc"]
RETURN n
Run Code Online (Sandbox Code Playgroud)

但是,如果您的节点具有列表属性,如下所示:

n.stringListProp = ["red", "purple", "green"]
Run Code Online (Sandbox Code Playgroud)

如果您想要获取在其列表属性中具有查询列表中的任意 1 个或多个标签的节点,那么您不能简单地执行如下查询:

MATCH (n)
WHERE n.stringListProp IN ["red"]
RETURN n
Run Code Online (Sandbox Code Playgroud)

而且您也不能使用 CONTAINS,因为那是针对子字符串的。所以你不能这样做:

MATCH (n)
WHERE n.stringListProp CONTAINS "red"
RETURN n
Run Code Online (Sandbox Code Playgroud)

并且您不能使用 FOREACH 循环它们,因为 FOREACH 仅适用于 CREATE、MERGE 或 DELETE 操作。所以我认为你必须对这种类型的 MATCH 查询使用 UNWIND 但我真的不确定如何构造这个查询。

如果有人知道该怎么做,可以帮我吗?

neo4j cypher

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