所以,假设我有一个像这样的节点列表:
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
我无法使用SET为Neo4j中的多个属性更新节点,有没有办法处理这个?
start n=node:wordindex(word='repine') set n.wordType = 'rare' return n
Run Code Online (Sandbox Code Playgroud)
如果我想添加n.link ="...",那怎么办?
我在控制台的密码中使用
create (SearchWord {word='car'})
Run Code Online (Sandbox Code Playgroud)
这适用于创建节点,但我现在如何找到该节点?我尝试启动n = node但它似乎想要一个索引.从我的创建节点开始,索引是如何创建的?
我知道索引可以手动创建,但创建节点如何访问索引?
有任何想法吗?
我试图在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,混合模式)
我正在尝试返回一个关系属性(称为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正确使用.任何意见,将不胜感激.
想象一下用户的巨大图表,每个用户都有一个名为email的属性.现在想象一下,我必须将那些使用gmail的人分组在一个名为"google_mail"的组中,将那些使用"yahoo"的人分组到名为"yahoo_mail"的组中.
如何遍历断开连接的图形(没有根节点访问每个用户节点而不是每个用户都连接(即我们可能有完全脱节的用户图).我想避免将所有这些用户加载到内存中.这是可能?
将我的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中,当我查看任何节点细节时,我可以看到它.但任何带标签过滤的请求都会失败.
考虑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上很容易.
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
我试图找出是否有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执行此类查询(或实际上大多数查询)的简单解释. …