我刚开始使用Neo并试图寻找有关此主题的先前问题.我需要帮助来重命名其中一个属性键.
我创建了以下节点:
CREATE (Commerce:Category {title:' Commerce', Property:'Category', Owner:'Magic Pie', Manager:'Simple Simon'})
Run Code Online (Sandbox Code Playgroud)
现在想要将标题重命名为name.有办法吗?我不想删除节点,因为有100个具有属性"title"的节点.
在 cypher 查询中,我有多个结果,我现在使用 collect 我如何通过 cypher 中的 collect 属性订购?
MATCH(u:User)
WITH COLLECT({name:u.name,date:u.date}) AS userinfo
RETURN userinfo
Run Code Online (Sandbox Code Playgroud)
或者在有多个集合已合并的情况下
MATCH(u:User)-[r:CreatedBy]->(p:Project)
WITH COLLECT({name:p.name,date:p.date}) AS info
MATCH(i:Institue)-[owner:Owner]->(i:Institute)
WITH COLLECT({instituteName:i.name,date:i.date}) AS instituteinfo,info
WITH COLLECT(instituteinfo + info) AS alldata
RETURN alldata
Run Code Online (Sandbox Code Playgroud) 摘要
我需要能够找到注册表项的DWORD值并为其设置一个变量以对其运行if语句.
我怎样才能抓住一个reg查询的双关语,以便我可以在其余的脚本中使用它?
reg查询
reg query HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile /v EnableFirewall
Run Code Online (Sandbox Code Playgroud)
req查询输出
EnableFirewall REG_DWORD 0x1
Run Code Online (Sandbox Code Playgroud)
我需要抓住什么
0x1
伪代码
query firewall reg value
regex out DWORD value and set to variable var1
if var1 == 0x1 then do blah
else do other blah
Run Code Online (Sandbox Code Playgroud) 首先,这是我的堆栈描述:
我有单位节点,它们使用属性"position"进行地理定位.位置是几何(POINT,CIRCLE或POLYGON).
我在这个属性上创建了一个图层和一个索引.我可以添加一个地理位置单位.这很好用.这是我之前的问题,我解决了它,因为它隐藏了真实的问题.
现在,我需要定义一些其他地理对象,如"path","detectionZone"或"actionZone".操作通常是"哪个其他单位在行动区?" 或"单位路径穿过检测区域?"
我如何索引这些数据?每个房产的一个指数?或者"wkt"属性的索引和用于检测区域,动作区域和路径的新节点,具有wkt属性?
我是否需要为每个地理概念创建一个图层?或者是一个独特的"geom"图层,它将所有与空间相关的节点分组?
我希望使用Neo4j将很多文件名导入图形数据库。数据来自外部来源,并以CSV文件格式提供。我想根据数据创建树形结构,以便以后可以在查询中轻松地“导航”该结构(即查找某个目录下的所有文件,出现在多个目录中的所有文件等)。
因此,给出示例输入:
/foo/bar/example.txt
/bar/baz/another.csv
/example.txt
/foo/bar/onemore.txt
Run Code Online (Sandbox Code Playgroud)
我想要创建以下图形:
( / ) <-[:in]- ( foo ) <-[:in]- ( bar ) <-[:in]- ( example.txt )
<-[:in]- ( onemore.txt )
<-[:in]- ( bar ) <-[:in]- ( baz ) <-[:in]- ( another.csv )
<-[:in]- ( example.txt )
Run Code Online (Sandbox Code Playgroud)
(其中每个节点标签实际上是一个属性,例如path :)。
使用固定数量的目录级别时,我已经能够达到预期的效果;例如,当每个文件位于三个级别的深度时,我可以创建一个包含4列的CSV文件:
dir_a,dir_b,dir_c,file
foo,bar,baz,example.txt
foo,bar,ban,example.csv
foo,bar,baz,another.txt
Run Code Online (Sandbox Code Playgroud)
并使用密码查询将其导入:
LOAD CSV WITH HEADERS FROM "file:///sample.csv" AS row
MERGE (dir_a:Path {name: row.dir_a})
MERGE (dir_b:Path {name: row.dir_b}) <-[:in]- (dir_a)
MERGE (dir_c:Path {name: row.dir_c}) <-[:in]- (dir_b)
MERGE (:Path {name: row.file}) <-[:in]- (dir_c) …
Run Code Online (Sandbox Code Playgroud) 您好,我正在使用,neo4j
并且我有以下架构:
"person":
{
"name": "Robert Mathews",
"nicknames": ["rob", "bert", "Mathew"]
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些人的姓名或昵称,['mike', 'rob', 'nick']
我知道如何通过列表搜索房产:
MATCH (p:Person)
WHERE p.name IN ['mike', 'rob', 'nick']
OR p.nickname IN ['mike', 'rob', 'nick']
RETURN p
Run Code Online (Sandbox Code Playgroud)
但现在的问题在于,p.name
andp.nickname
不再是一种string
类型,而是一种array
类型。
谁能指出正确的方向来将输入数组与人员数组进行匹配并获得最佳匹配?
我在尝试使用neo4j bolt驱动程序运行简单的密码时遇到错误.什么出了什么问题?
public void boltDriver() {
Config noSSL = Config.build()
.withEncryptionLevel(Config.EncryptionLevel.NONE).toConfig();
Driver driver = GraphDatabase.driver("bolt://localhost:7474",
AuthTokens.basic("neo4j", "neo4j1"), noSSL); // <password>
try (Session session = driver.session()) {
StatementResult result;
String foafQuery = " MATCH (n) WHERE EXISTS(n.country) RETURN DISTINCT \"node\" as element, n.country AS country ";
result = session.run(foafQuery, parameters("name", "Joe"));
while (result.hasNext()) {
Record next = result.next();
System.out.println(next.get("element"));
System.out.println(next.get("country"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
异常:线程"main"中的异常org.neo4j.driver.v1.exceptions.ClientException:协议错误,服务器建议的意外协议版本:1213486160 at org.neo4j.driver.internal.connector.socket.SocketClient.negotiateProtocol(SocketClient.java :198)org.neo4j.driver.internal.connector.socket.SocketClient.start(SocketClient.java:73)org.neo4j.driver.internal.connector.socket.SocketConnection.(SocketConnection.java:63)at org位于org.neo4j.driver的org.neo4j.driver.internal.pool.InternalConnectionPool $ 1.allocate(InternalConnectionPool.java:191)中的.neo4j.driver.internal.connector.socket.SocketConnector.connect(SocketConnector.java:52). internal.pool.InternalConnectionPool $ 1.allocate(InternalConnectionPool.java:180)org.neo4j.driver.internal.pool.ThreadCachingPool.allocate(ThreadCachingPool.java:212)at org.neo4j.driver.internal.pool.ThreadCachingPool.acquireFromGlobal (ThreadCachingPool.java:164)org.neo4j.driver.internal.pool.ThreadCachingPool.acquire(ThreadCachingPool.ja)va:118)atg.neo4j.driver.internal.pool.InternalConnectionPool.acquire(InternalConnectionPool.java:109)ato.neo4j.driver.internal.InternalDriver.session(InternalDriver.java:53)at Neo4jMain.boldDriver(Neo4jMain) .java:55)在Neo4jMain.main(Neo4jMain.java:30)
我想将我的默认用户密码更改为数据库.我试过这个:
$ curl -H "Content-Type: application/json" \
-X POST \
-d '{"password":"password"}' \
-u neo4j:neo4j \
http://localhost:7474/user/neo4j/password"
Run Code Online (Sandbox Code Playgroud)
但它不让我给我这个错误:
输入'u'无效:预期'r/R'或'a/A'(第1行,第2列(偏移:1))"curl -H"Content-Type:application/json"-X POST -d'{ "password":"qazWSXEDCRFV!1"}' - neo4j:neo4j http:// localhost:7474/user/neo4j/password ""^
如何解决这个问题?
我的问题是为什么WHERE
运营商的工作速度不如预期的那么快?考虑我有7个带标签的节点Consumer
.这是一些示例数据......
MERGE (c:Consumer {mobileNumber: "000000000000"})
MERGE (:Consumer {mobileNumber: "111111111111"})
MERGE (:Consumer {mobileNumber: "222222222222"})
MERGE (:Consumer {mobileNumber: "333333333333"})
MERGE (:Consumer {mobileNumber: "444444444444"})
MERGE (:Consumer {mobileNumber: "555555555555"})
MERGE (:Consumer {mobileNumber: "666666666666"})
WITH c
MATCH (c1:Consumer) WHERE c1.mobileNumber <> "000000000000"
MERGE (c)-[:HAS_CONTACT]->(c1)
Run Code Online (Sandbox Code Playgroud)
并且HAS_CONTACT
在:Consumer(mobileNumber:{"000000000000"})
所有其他6个节点之间存在关系.unique index
对mobileNumber
场地也有约束.现在当我尝试执行以下查询时:
PROFILE MATCH (n:Consumer{mobileNumber : "000000000000"}),
(m:Consumer{mobileNumber : "111111111111"})
WITH n,m
MATCH path = SHORTESTPATH((n)-[contacts:HAS_CONTACT]-(m))
RETURN contacts;
Run Code Online (Sandbox Code Playgroud)
所以它的工作正常如预期(基于唯一索引的搜索节点).以下是其结果:
现在让我们使用WHERE
子句更改以上查询:
PROFILE MATCH (n:Consumer{mobileNumber : "000000000000"}),
(m:Consumer) WHERE …
Run Code Online (Sandbox Code Playgroud) 使用路径变量时出现问题。
例如我的层次结构看起来像
A-[Knows]-> B
B-[Knows]-> C
C-[Knows]-> D
D-[Knows]-> E
C-[Knows]-> F
F-[Knows]-> G
G-[Knows]-> B
Run Code Online (Sandbox Code Playgroud)
我的查询是 MATCH p = (x)<-[Knows*]->(y) Return p
关系方向必须是双向的。玩具问题就像A,B,但在实际应用中,我不知道关系的方向。
因此,存在一个循环。从A到C的路径开始寻找。但是在找到C之后,下一步便发生了循环。
如何避免循环或如何忽略它,如何从实际路径中删除或如何在路径以B结尾时停止。我不需要找到第二个B到C。
预期结果 :
A->B->C->D->E
A->B->C->F->G->B // that is enough. The query must be stopped.
Run Code Online (Sandbox Code Playgroud)
实际结果 :
A->B->C->D->E
A->B->C->F->G->B->C->F->G->B..... loop trouble.
Run Code Online (Sandbox Code Playgroud)