标签: neo4j

Neo4j Cypher中有多个不相关的查询?

难道http://localhost:7474/browser/不支持多个不相关的查询?

这段代码:

MATCH (a {cond:'1'}), (b {cond:'x'}) CREATE a-[:rel]->b
MATCH (a {cond:'2'}), (b {cond:'y'}) CREATE a-[:rel]->b
MATCH (a {cond:'3'}), (b {cond:'z'}) CREATE a-[:rel]->b
Run Code Online (Sandbox Code Playgroud)

导致错误:

CREATE和MATCH之间需要WITH

但由于我的查询不相关,我认为我不需要WITH.

如何在不必一次一行输入的情况下完成上述操作?

neo4j cypher

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

SSD使用对基本数据库假设的影响是什么?

固态硬盘现在司空见惯; Amazon EBS由SSD支持,因此大多数云数据库现在也运行在SSD(Heroku PostgreSQL等)上.传统上,数据库和相关体系结构的设计理念是随机访问不好 - SSD不再是这种情况.

SSD如何影响以下?

  1. 数据库设计 - 数据库旨在最大限度地减少磁盘搜索(WAL,B树).SSD如何改变数据库设计的内部和调整?
  2. 应用程序开发 - 工作假设一直是(a)您希望从内存而不是DB服务器用户请求,以及(2)对数据库的访问是IO绑定的.使用SSD,从数据库中检索数据可以足够快,并且数据库访问通常是网络绑定的.这是否减少了对内存数据库的需求?显然,您仍然希望预先计算昂贵的操作,但您可能只是将它们存储在数据库中
  3. 专业数据库 - 有很多数据库可以处理关系数据库认为不好的事情(部分原因是随机数据访问).一个这样的例子是图形DB(Neo4j),它以紧凑的方式在磁盘上存储节点和邻接列表.如果我们可以在SSD上部署RDBMS而不担心随机访问,这些数据库是否有用?

database postgresql solid-state-drive neo4j redis

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

Neo4j 4.0下新建数据库时出错

我使用的是 Debian 9.9,Neo4j 的版本是 4.0。我在使用 neo4j 浏览器创建新数据库时遇到问题。我遵循的指令是这个

我尝试了以下 Cypher 命令:

create database myNewDatabase
Run Code Online (Sandbox Code Playgroud)

但是,会弹出这样的错误:

Neo.ClientError.Statement.NotSystemDatabaseError
Unsupported administration command: create database myNewDatabase
Run Code Online (Sandbox Code Playgroud)

请让我知道错误消息的含义以及如何解决。提前谢谢:-)

neo4j

17
推荐指数
2
解决办法
8549
查看次数

使用MongoDB作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

我们目前正在为专业公司内部实施类似CRM的解决方案.由于存储的信息的性质,以及信息的变化值和键,我们决定使用文档存储数据库,因为它完全符合目的(在本例中我们选择了MongoDB).

作为这个CRM解决方案的一部分,我们希望存储实体之间的关系和关联,例子包括存储利益冲突信息,股东,受托人等.以最有效的方式将所有这些实体链接在一起我们确定了"关系"的中心模型是必要的.所有关系都应附有历史信息(开始和终止日期),以及不同的元数据; 例如,股东关系也包含持有的股份数量.

由于传统的RDBMS解决方案不适合我们以前的需求,因此在我们目前的情况下使用它们是不可行的.我想要确定的是在我们的情况下使用图形数据库是否更为相关,或者实际上是否只使用mongo的内置关系信息是合适的.

关系信息将在整个系统中大量使用.我们希望执行的一些信息查询的示例如下:

  • 获取'xyz limited''客户'公司的所有"关键联系人"
  • 获得"约翰"是股东的公司的所有其他"股东"
  • 获取"abc limited"的"客户"实体的所有"主要联系人",并且是"信任我们银行限制"的客户

鉴于这种"树"结构的关系,是使用图形数据库(如Neo4j)更合适吗?

python django mongodb neo4j redis

16
推荐指数
2
解决办法
2357
查看次数

在Neo4J中存储多个图形

我有一个应用程序,它将关系信息存储在MySQL表中(contact_id,other_contact_id,strength,recorded_at).如果我需要做的就是显示联系人的关系,甚至生成两个联系人的共同联系人列表,这很好.

但现在我需要生成以下统计数据:'2011年1月强度为3或更高的双向连接总数是多少'或(假设每个联系人都是组的一部分)'哪个组的连接数最多?到其他团体等

我很快发现用于生成这些统计数据的SQL变得非常难以实现.

所以我写了一个脚本,对于任何给定的日期,它将在内存中生成一个图形.然后,我可以根据该图表运行我想要的任何统计数据.更容易理解,总的来说,性能更高 - 除了生成图形部分.

我的下一个想法是缓存这些图,这样我就可以在需要运行新的统计数据时调用它们(或生成后面的图形:例如,对于今天的图表,我采用昨天的图表并应用自昨天以来发生的任何更改).我尝试了memcached,它工作得很好,直到图形增长> 1 MB.

所以现在我正在考虑使用像Neo4J这样的图形数据库.

唯一的问题是,我没有一个图表.或者我这样做,但它随着时间的推移而变化,我需要能够以不同的参考时间查询它.

那么,我可以:

  • 在Neo4J中存储多个图形并分别与它们进行重新交互/交互?然后我会为每个日期创建和存储单独的社交图表.

要么

  • 为时间戳添加到每个边缘的有效值并适当地过滤图形:所以如果我想要一个"5月1日"的图形,我只会跟随在"5月1日"之前创建的两个noeds之间的最新边缘(如果所有边缘都是如此)是在5月1日之后创建的,然后这些节点将不会连接).

我是图形数据库的新手,所以任何帮助/指针/提示都将受到赞赏.

graph neo4j graph-databases

16
推荐指数
2
解决办法
8919
查看次数

如何计算Neo4j中的关系数量

我正在使用Neo4j 2.0并使用以下查询来查找特定节点中特定关系的数量计数.

我必须检查来自特定节点PERSON的名为"LIVES"的关系数量.

我的查询是:

match (p:PERSON)-[r:LIVES]->(u:CITY) where count(r)>1  
return count(p);
Run Code Online (Sandbox Code Playgroud)

显示的错误是:

SyntaxException: Invalid use of aggregating function count(...)
Run Code Online (Sandbox Code Playgroud)

我该如何纠正?

neo4j cypher

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

如何获得关系的标签

如果我有密码查询

MATCH (a)-[r]->(b)
Run Code Online (Sandbox Code Playgroud)

我可以得到a和b细线的标签

MATCH (a)-[r]->(b)
RETURN labels(a), labels(b)
Run Code Online (Sandbox Code Playgroud)

但是当我想要r使用相同语法的标签时

MATCH (a)-[r]->(b)
RETURN labels(r)
Run Code Online (Sandbox Code Playgroud)

我明白了

Type mismatch: expected Node but was Relationship
Run Code Online (Sandbox Code Playgroud)

如何归还r关系的标签?

neo4j cypher

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

如何在Neo4j Cypher上创建一个包含过滤器的字符串

我需要在Neo4J中创建一个包含过滤器的字符串.这个想法很简单.

一个很好的例子是我需要从人员数据库中检索所有包含汽车子串的名字的人.

我怎样才能做到这一点?

neo4j cypher

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

在简单的Neo4j查询中排除标签名称

通常我可以在SO上找到我需要的所有东西,但这次不是.我正在寻找一种非常简单的方法来排除标签,例如(pseudo code):

match (n) where n not in (Label1, Label2) return n
Run Code Online (Sandbox Code Playgroud)

抱歉蹩脚的查询.简而言之,我有标签x,y,z,我想要将它们全部归还z.

日Thnx!

neo4j cypher

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

如何隐藏Neo4j中节点之间不需要的关系

我是Neo4j的新手,我有一个奇怪的要求.

我有一些节点

CREATE (a:node {title:1})
CREATE (b:node {title:2})
CREATE (c:node {title:3})
CREATE (d:node {title:4})
Run Code Online (Sandbox Code Playgroud)

和它们之间的多种关系:

CREATE (a)-[:RELATES{jump:[1]}]->(b)
CREATE (b)-[:RELATES{jump:[1]}]->(c)
CREATE (c)-[:RELATES{jump:[1]}]->(d)
CREATE (a)-[:RELATES{jump:[2]}]->(c)
CREATE (c)-[:RELATES{jump:[2]}]->(d)
CREATE (d)-[:RELATES{jump:[1]}]->(b)
CREATE (a)-[:RELATES{jump:[3]}]->(d)
CREATE (d)-[:RELATES{jump:[3]}]->(c)
CREATE (c)-[:RELATES{jump:[3]}]->(b)
Run Code Online (Sandbox Code Playgroud)

图表和关系如下所示: 在此输入图像描述

我想查看图表,只有这些关系应该是我感兴趣的.我现在做的事情是这样的: MATCH (a)-[r]->(b) WHERE 1 IN r.jump RETURN a,b

我得到类似的东西:

在此输入图像描述

有没有办法在显示图表时隐藏(不删除)不相关的关系?可能是这样的(在图像工具上编辑):

在此输入图像描述

PS:让格雷变白.

neo4j cypher

16
推荐指数
2
解决办法
3115
查看次数