标签: neo4j

哪个平台用于最快的neo4j图遍历?

我必须实时对 neo4j 图进行遍历。该图包含大约 200,000 个节点和 300,000 个关系。我主要关心的是结果应该超级快。

我应该用 Java 编写遍历算法吗?使用 python(py2neo 或bulbflow)是否有明显的性能问题?如果python和java的性能相同,我个人更喜欢这里的python。

python java performance neo4j

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

如何在cypher / neo4j中找到与一系列节点相关联的最亲密的人

我的人员和部门具有以下可能的关系

(p:Person)-[:WORKS_IN]->(d:Department)
(employee:Person)-[:REPORTS_TO]->(manager:Person)
(child:Department)-[:UNIT_OF]->(parent:Department)
Run Code Online (Sandbox Code Playgroud)

我没有获得识别特定部门经理的信息,但是在任何部门中,关系最为密切的[:REPORTS_TO]人都是老板。我正在尝试获取与该部门中“报告给”最多的人匹配的所有部门的列表,但是我却非常失败。

更复杂的是,部门内有“非部门”子组,其定义是一个人可以向部门中不是部门经理的人报告。

我正在寻找一种输出所有部门ID的列表的方法,该列表具有该部门中报告最多的员工的ID。每个部门一行是理想的。

谢谢

neo4j cypher

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

获取所有路径neo4J Cypher

我正在使用neo4j来开发概念验证,我希望获得从我的根节点到叶子的所有路径的所有节点ID,例如使用id:

ROOT1-->N1--->SN2--->L1
ROOT1-->N2--->SN3--->L3
Run Code Online (Sandbox Code Playgroud)

我想在结果查询中得到的是: ROO1,N1,SN2 and ROOT1,N2,SN3

我是cypher的新手,我很难得到这个结果,任何帮助都会有用.

neo4j cypher

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

测试neo4j/spring数据中是否存在关系

我试图解决这个简单的问题,如果在一个有"知道"关系的图形中,某个人A知道某个人B.理想情况下,我会用真或假回答这个问题,但我没有解决这个问题.

我在另一个StackOverflow问题中发现了以下内容,这几乎是我想要的,除了回答我的问题之外,它还会更改图表:

MATCH  (p:Person {userId: {0}}), (b:Person {userId: {1}}) 
MERGE (p)-[r:KNOWS]->(b) 
ON CREATE SET r.alreadyExisted=false 
ON MATCH SET r.alreadyExisted=true 
RETURN r.alreadyExisted;
Run Code Online (Sandbox Code Playgroud)

最后我想把它放在像这样的Spring Neo4J存储库中

public interface PersonRepository extends GraphRepository<Person> {
    boolean knows(final Long me, final Long other);
}
Run Code Online (Sandbox Code Playgroud)

这意味着如果有一种方法可以在没有cypher的情况下使用Spring Query和Finder方法,那也没关系.

neo4j cypher spring-data-neo4j

0
推荐指数
2
解决办法
4980
查看次数

@Index属性的Spring Data Neo4j和InvalidDataAccessApiUsageException

我已将uuid属性添加到我的SDN 4 Base实体,所以现在它看起来像:

@NodeEntity
public abstract class BaseEntity {

    @GraphId
    private Long id;

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

...

}
Run Code Online (Sandbox Code Playgroud)

现在我的一些测试停止了工作.

我有一个Commentable抽象类:

@NodeEntity
public abstract class Commentable extends BaseEntity {

    private final static String COMMENTED_ON = "COMMENTED_ON";

    @Relationship(type = COMMENTED_ON, direction = Relationship.INCOMING)
    private Set<Comment> comments = new HashSet<>();

    public Set<Comment> getComments() {
        return comments;
    }

    public void addComment(Comment comment) {
        if (comment != null) {
            comments.add(comment);
        }
    }

    public void removeComment(Comment comment) { …
Run Code Online (Sandbox Code Playgroud)

neo4j spring-data-neo4j-4 neo4j-ogm

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

结合密码中的属性

我想使用cypher返回某种形式的东西:

{
  name: 'Name of Parent Node',
  property1 : 'some property of parent node',
  property2 : 'some other property'
  children: [...some array of children...]
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经完成了以下工作:

MATCH (p:Parent)-[:SOME_RELATIONSHIP]->(c:Child)
WITH collect(c) as children, p
RETURN {properties: properties(p),  children: children} 
Run Code Online (Sandbox Code Playgroud)

哪种有点类似于我想要的,但不完全相同。有没有一种方法可以将其合并或合并,以使属性组合在一起?

neo4j cypher

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

Neo4J,匹配节点为“或”

喂,

我想匹配一个节点可以是typeX或typeY的图,我的第一个想法是:

match (:typeX|typeY)-[]-(z) return z
Run Code Online (Sandbox Code Playgroud)

但这不起作用:(

有什么方法可以不键入查询两次?像这样:

match (:typeX)-[]-(z), (:typeY)-[]-(z) return z
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?先感谢您 :)

neo4j cypher

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

在图形视图 Neo4j 中仅返回没有关系的节点

我的 Neo4j 3 有节点和关系,我必须在图形视图中查看所有没有关系的节点。我使用过,Match(n) return n但它返回了所有节点和关系。如何只查看没有关系的节点?

neo4j cypher

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

neo4j:来自纯字符串表示的整数列表

语境

我想从 csv 文件读取到我的数据库并创建节点和连接。对于要创建的订单节点,要读取的字段之一是产品的填充列表(关系键),即看起来像这样"[123,456,789]",其中数字是产品 ID。

现在将数据读入数据库,我可以毫无问题地为订单和产品创建节点;进行另一次迭代我现在想通过展开订单中的产品列表并链接到相应的产品来创建边缘。

最好是,如果我可以在订单节点的创建时将包含列表的字符串转换为整数列表,以便对这些值进行简单循环并匹配产品节点就可以解决问题(也为了存储效率)会更好)。

问题

但是我无法弄清楚如何将所述字符串转换为包含整数的列表的所述格式。我为此想出一个密码的所有尝试都失败了。我将在下面发布其中一些,从字符串开始l

WITH '[123,456,789]' as l
WITH split(replace(replace(l,'[',''),']',''),',') as s
UNWIND s as ss
COLLECT(toInteger(ss) ) as k 
return k

WITH '[123,456,789]' as l
WITH split(replace(replace(l,'[',''),']',''),',') as s, [] as k
FOREACH(ss IN s| SET k = k + toInteger(ss) )
return k
Run Code Online (Sandbox Code Playgroud)

两个语句都失败了。

编辑

我找到了一个部分解决方案,但我不太满意,因为它仅适用于我手头的任务,但不是解决此列表转换的更一般问题的解决方案。

我发现可以创建一个空列表作为节点的属性,它可以连续更新:

CREATE (o:Order {k: []})
WITH o, '[123,456]' as l
WITH o, split(replace(replace(l,'[',''),']',''),',') as s
FOREACH(ss IN s | SET o.k= o.k + …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

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

用 C# 编写 Neo4J Cypher 查询

我有一个连接到 Neo4j 数据库的 MVC Asp.Net 应用程序。在我的数据库中,实体(m:Movie)<-[r:HAS_WATCHED_MOVIE]-(u:User)之间存在关系。movieuser

我想要做的是按降序返回一个IEnumerable<Movie>包含前 3 部电影(顶级电影是HAS_WATCHED_MOVIE关系最多的电影)。

我已经想出了一个 Cypher 查询来做到这一点,它是这样的:

MATCH (m:Movie)<-[r:HAS_WATCHED_MOVIE]-(b) 
RETURN m, COUNT(r) 
ORDER BY COUNT(r) DESC 
LIMIT 3
Run Code Online (Sandbox Code Playgroud)

由于我是 Neo4j C# 客户端的新手,我不确定如何在 C# 中编写此查询?

c# neo4j cypher neo4jclient

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