标签: neo4j

从Cypher查询中获取路径长度

所以,假设我有一个像这样的节点列表:

A - > B - > C - > D - > ......

我想将节点F添加到此列表的开头.为了使这种模式复杂化,我可以将该列表中任何节点的引用作为"起始点",我将从中获得起点.例如,我可以给出对节点"C"的引用,并且需要派生一个将返回对A的引用的算法.

我认为这应该可以通过诸如的查询来完成

    START n = node(*), a = node(*)
    MATCH a -[:LINKED*]> n
    WHERE n.id! = <ID>
    RETURN a
Run Code Online (Sandbox Code Playgroud)

如果我可以按长度对关系进行排序,我可以简单地将最长的路径作为关系中的第一个节点,然后沿着我的快乐方式前进.麻烦的是,我无法弄清楚如何按路径长度排序结果.我认为它一定是可能的,我只是缺少一个小的查询命令.任何接受者?

-pYr0

database graph list neo4j cypher

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

更新Cypher中的多个属性(neo4j)

我无法使用SET为Neo4j中的多个属性更新节点,有没有办法处理这个?

start n=node:wordindex(word='repine') set     n.wordType = 'rare'         return n
Run Code Online (Sandbox Code Playgroud)

如果我想添加n.link ="...",那怎么办?

neo4j

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

索引和Cypher - 如何创建索引的节点

我在控制台的密码中使用

create (SearchWord {word='car'})
Run Code Online (Sandbox Code Playgroud)

这适用于创建节点,但我现在如何找到该节点?我尝试启动n = node但它似乎想要一个索引.从我的创建节点开始,索引是如何创建的?

我知道索引可以手动创建,但创建节点如何访问索引?

有任何想法吗?

neo4j

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

在Linux机器上安装Neo4j时出现"neo4j:command not found"错误

我试图在Ubuntu机器上安装Neo4j1.9.2.我从Neo4j.org下载了neo4j-community-1.9.2-unix.tar.gz并将其解压缩.neo4j文件位于bin目录中.

在bin目录中,我键入命令"neo4j start",得到错误"neo4j:command not found".我也试过命令"sudo neo4j install",在我提供密码之后,我得到了同样的错误"neo4j:command not found".

Java已在此机器上安装:java版"1.6.0_27"OpenJDK运行时环境(IcedTea6 1.12.5)(6b27-1.12.5-0ubuntu0.12.04.1)OpenJDK 64位服务器VM(版本20.0-b12,混合模式)

linux neo4j

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

Neo4j cypher查询返回关系属性和所有匹配关系属性的总和

我正在尝试返回一个关系属性(称为proportion)加上Neo4j中Cypher查询匹配的所有关系的该属性的总和.我到目前为止:

START alice=node(3) 
MATCH p=(alice)<-[r:SUPPORTED_BY]-(n) 
RETURN reduce(total=0, rel in relationships(p): total + rel.proportion), sum(r.proportion) AS total;
Run Code Online (Sandbox Code Playgroud)

返回:

+-----------------+
| reduced | total |
+-----------------+
| 2       | 2     |
| 1       | 1     |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

我期待的地方:

+-----------------+
| reduced | total |
+-----------------+
| 2       | 3     |
| 1       | 3     |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

作为Cypher的初学者用户,我不确定如何处理这个查询; 我显然没有reduce正确使用.任何意见,将不胜感激.

neo4j cypher

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

如何在Neo4j创建后对节点进行分组?

想象一下用户的巨大图表,每个用户都有一个名为email的属性.现在想象一下,我必须将那些使用gmail的人分组在一个名为"google_mail"的组中,将那些使用"yahoo"的人分组到名为"yahoo_mail"的组中.

如何遍历断开连接的图形(没有根节点访问每个用户节点而不是每个用户都连接(即我们可能有完全脱节的用户图).我想避免将所有这些用户加载到内存中.这是可能?

neo4j

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

Neo4j 2.0.0RC1标签回归

将我的2.0.0M06 Neo4j数据库导入到新版本2.0.0RC1后,看起来标签查询不起作用:

在2.0.0RC1

neo4j-sh (?)$ start n=node(*) return count(*);            
+----------+
| count(*) |
+----------+
| 246      |
+----------+
1 row
219 ms

219 ms
neo4j-sh (?)$ MATCH (c:contract) return c;                  
+---+
| c |
+---+
+---+
0 row
244 ms
Run Code Online (Sandbox Code Playgroud)

在2.0.0M06

neo4j-sh (root,0)$ start n=node(*) return count(n);
+----------+
| count(n) |
+----------+
| 246      |
+----------+
1 row
1205 ms
neo4j-sh 

neo4j-sh (root,0)$ match (c:contract) return count(c);
+----------+
| count(c) |
+----------+
| 55       |
+----------+
1 row
Run Code Online (Sandbox Code Playgroud)

193毫秒

标签很好用在DB中,当我查看任何节点细节时,我可以看到它.但任何带标签过滤的请求都会失败.

labels neo4j

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

是否可以确定Cypher MERGE是创建还是匹配?

考虑Neo4J 2.0 Cypher查询

MERGE (u:User {id_str:"123"}) 
  ON CREATE SET
    u.name="Bob",
  ON MATCH SET
    u.phone_num="555-4152"
RETURN u
Run Code Online (Sandbox Code Playgroud)

这是一个愚蠢的查询-不用担心这里的意图。问题是,我如何理解此查询是创建还是仅找到一个节点?

更新

也许我应该进一步激励我为什么要这种行为。原因如下:如果该节点已经存在,则不必转到远程服务器(在我的情况下为Twitter API)并下载用户的所有元数据。如果ON CREATE可以以某种方式链接回回调以拉出此数据,那就太好了。这种行为在Cypher中似乎不太可能实现。因此,大概我想做的是一个匹配,如果获取返回NULL,那么我将调出Twitter API,获取元数据并进行创建。

neo4j cypher

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

如何在c#neo4jClient中创建一个唯一的节点(如果已经存在则不重复)?

我正在尝试执行以下操作(这在neo4J cypher上很容易.

merge (ee:Person { id: "id1234" })
Run Code Online (Sandbox Code Playgroud)

如何确保下一个创建不会在c#Neo4Jclient中创建另一个节点????

迫切需要这个

client.Cypher.Merge("(user:User {Id: {Id} })")
.onCreate()
.set("user= {newUser}")
.withParams(new { ... } )
.executeWithoutResults();
Run Code Online (Sandbox Code Playgroud)

似乎Merge没有被提升.知道为什么吗?因为即使对象完全相同,它仍然会创建一个新节点.

谢谢,R

c# neo4j neo4jclient

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

Cypher查询嵌套关系(像查询一样)

我试图找出是否有Cypher查询来执行地图查询功能.给出示例数据.

                        (stack)
                      /    |   \
                     /     |    \
                (item)  (item)  (item)
                 /  \      |       / \
                /    \     |      /   \
           (node) (node) (node) (node)(node)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我对匹配nodes 的查询是.

START stack=node({stack}) 
MATCH (stack)-[:Item]-(item)-[:Representation]-(representation)
RETURN representation
Run Code Online (Sandbox Code Playgroud)

(representation在这个查询中相当于node我在上图中没有足够的空间来保持书写表示).

现在正如预期的那样,此查询仅返回与所有item节点相关的表示的平面列表.例如

[ representation, representation, representation.... ]
Run Code Online (Sandbox Code Playgroud)

我真正想要的是一个查询返回的嵌套结构items及其相关representation小号如

[ 
    [ item, representations ],
    [ item, representations ],
    [ item, representations ] 
]
Run Code Online (Sandbox Code Playgroud)

确切的结构return并不重要.这样我就可以轻松地映射item到它representations而不需要为每个items 发送查询representations.

这可能看起来像一个微不足道的问题,但在查看Cypher备忘单并观看视频和谷歌搜索Cypher教程之后.我还没有找到关于如何使用Cypher执行此类查询(或实际上大多数查询)的简单解释. …

neo4j cypher

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

标签 统计

neo4j ×10

cypher ×4

c# ×1

database ×1

graph ×1

labels ×1

linux ×1

list ×1

neo4jclient ×1