使用Cypher如何获取图形中的所有节点?我正在对图表运行一些测试,我有一些没有关系的节点,所以我在制作查询时遇到了麻烦.
我想要得到它们的原因是我想在每次测试开始时删除图中的所有节点.
我是第一次尝试Neo4j.我正在使用2.0-RC1社区版.
我创建了一些节点:
MERGE (u:User{username:'admin',password:'admin'})
MERGE (r1:Role{name:'ROLE_ADMIN'})
MERGE (r2:Role{name:'ROLE_WEB_USER'})
MERGE (r3:Role{name:'ROLE_REST_USER'})
Run Code Online (Sandbox Code Playgroud)
现在我想在节点之间添加关系.不过,我不希望清除上面的脚本创建的现有数据库,添加语句,并再次运行它.我想添加与现有节点的关系.谷歌帮我找到了这个:
START n=node(*), m=node(*)
where has(n.username) and has(m.name) and n.username = 'admin'
and m.name = 'ROLE_WEB_USER'
create (n)-[:HAS_ROLE]->(m)
Run Code Online (Sandbox Code Playgroud)
哪个工作正常(即使我不懂所有的语法).但是,我知道这会找到任何具有username属性的节点和任何具有name属性的节点,而不是使用标签来检查它是否具有正确的节点类型.
如何使用标签做同样的事情?
您好我用自定义Java应用程序创建了一个neo4j数据库,并尝试更改配置文件中的路径以连接到已创建的数据库.
尝试检查webadmin控制台中的数据时,只有节点0可见(似乎数据库为空).我试图将相同的数据库导入Gephi并且它不是空的.
此外,当我尝试切换回原始数据库(也不是空的)时,在webadmin中只出现节点0.
我尝试通过以下方式修改neo4j-server.propertied文件:
#*****************************************************************
# Administration client configuration
#*****************************************************************
# location of the servers round-robin database directory. possible values:
# - absolute path like /var/rrd
# - path relative to the server working directory like data/rrd
# - commented out, will default to the database data directory.
org.neo4j.server.webadmin.rrdb.location=data/rrd
# REST endpoint for the data API
# Note the / in the end is mandatory
#org.neo4j.server.webadmin.data.uri=/db/data/ #original database
org.neo4j.server.webadmin.data.uri="/db/mydatabase" #my database
# REST endpoint of the administration API (used by …
Run Code Online (Sandbox Code Playgroud) 这是一个跟进,无法重现/验证图表数据库和neo4j在动作书中的性能声明.我已经更新了设置和测试,并且不想过多地更改原始问题.
整个故事(包括脚本等)在https://baach.de/Members/jhb/neo4j-performance-compared-to-mysql上
简短版本:在尝试验证"图表数据库"一书中的性能声明时,我得到了以下结果(查询包含n个人的随机数据集,每个人有50个朋友):
My results for 100k people
depth neo4j mysql python
1 0.010 0.000 0.000
2 0.018 0.001 0.000
3 0.538 0.072 0.009
4 22.544 3.600 0.330
5 1269.942 180.143 0.758
Run Code Online (Sandbox Code Playgroud)
"*":仅限单次运行
My results for 1 million people
depth neo4j mysql python
1 0.010 0.000 0.000
2 0.018 0.002 0.000
3 0.689 0.082 0.012
4 30.057 5.598 1.079
5 1441.397* 300.000 9.791
Run Code Online (Sandbox Code Playgroud)
"*":仅限单次运行
在64位ubuntu上使用1.9.2我已经使用这些值设置了neo4j.properties:
neostore.nodestore.db.mapped_memory=250M
neostore.relationshipstore.db.mapped_memory=2048M
Run Code Online (Sandbox Code Playgroud)
和neo4j-wrapper.conf:
wrapper.java.initmemory=1024
wrapper.java.maxmemory=8192
Run Code Online (Sandbox Code Playgroud)
我对neo4j的查询看起来像这样(使用REST api):
start person=node:node_auto_index(noscenda_name="person123") match (person)-[:friend]->()-[:friend]->(friend) return …
Run Code Online (Sandbox Code Playgroud) 问候,
是否有除Neo4J以外的任何开源图形数据库?
注意: 为什么不用Neo4J?
Neo4J是开源的,但计算原语(节点数,关系和属性).如果您将其用于商业用途.并且在官方网站上没有任何直接的定价信息.所以可能有潜在的供应商锁定(虽然我刚刚开始我的公司,并且没有预算花钱在软件上.)所以它是不可选择的.
问候,
关于在何处使用标签与节点属性与关系+节点的任何经验法则.
让我们举个例子,说我有一个商店,我想把我的产品放在neo4j中.他们的标识符是产品sku,我也希望对它们进行分类,就像这个是衣服,食品,电子产品,你就明白了.我将在我的图表上进行免费搜索,就像用户可以搜索任何内容一样,并且我将返回与该搜索字符串相关的所有内容.
使用会更好吗:
sku 001
,我会标记它的标签Food
.sku 001
,并在此节点上有属性调用category:"Food"
sku 001
,我将为其创建另一个节点Food
,并将创建一个" category
" 关系来关联它们.我已经读过,如果你要查找属性,最好将其作为关系+节点,因为遍历比查找节点属性要快得多.
TIA