【问题标题】:Neo4J first steps: how to code the most basic operationsNeo4J 第一步:如何编写最基本的操作
【发布时间】:2013-08-02 20:25:28
【问题描述】:

我刚刚安装了 Neo4J,运行良好。我正在寻找一个非常简单的教程(实际上很少有命令行),我将能够:

  1. 创建一些数据(至少 2 个节点和它们之间的一种关系);
  2. 查询和查看最近创建的数据;
  3. 更新此示例数据的属性;
  4. 删除创建的数据; 示例代码可以在 Cypher 和/或 Gremlin 中,以在默认空数据库中的 Web 管理控制台中运行。

我在官方网站上看了很多,它的文档、书籍和教程,它们似乎都很复杂:有些甚至驱使我创建一个 Java 应用程序(我什至不使用 Java)。就像一个 SQL 初学者一样,我想测试最基本的数据库操作,从最基本的界面,管理面板。不明白为什么,this thread 因不具建设性而被关闭(!?)。

提前谢谢大家。

【问题讨论】:

  • 要添加答案,请查看在线密码教程:neo4j.org/learn/cypher 希望从您那里获得一些反馈。
  • 您的教程仅适用于给定的已填充数据库(电影)。我想要一些更基本的东西。此外,某些代码不适用于我的本地主机中的同一数据库。
  • 本教程包含一个已经填满的沙盒控制台。您可以通过在向上滚动时执行显示为“Graph Setup”的创建语句来复制该设置。你能更具体地说明什么不起作用吗?
  • 我的问题有那么难吗?在 Cypher、Gremlyn 或 Sparql 中插入、选择、更新和删除以在我自己的命令行上编写,在默认的开箱即用的空数据库中。不想安装电影或 wahtever-gdb,不想使用在线沙盒,不想看网络研讨会,不想读整本书。 四个可在我全新的 Neo4J Enterprise 设置中工作的命令行,听起来很简单。

标签: neo4j


【解决方案1】:
CREATE ( blagus  { firstname: 'Alexander', lastname: 'Blagus'} )

CREATE (celso  { firstname: 'Celso', lastname: 'Oliveira'}), (celso) - [r:WORKS_WITH] - > (blagus)

return blagus, celso, r

在此示例中,有 2 个不同的查询,第一个查询创建一个具有 2 个属性的节点。第二个与第一个做完全相同的事情,并创建从 celso 到 blagus 的关系

START n=node(*) RETURN "The number of nodes in your graph is "+count(*)+" !" as total;

返回一个名为 total 的变量,其值为 'The number of nodes in your graph is 2!',它与 select count(*) 基本相同

START me=node(1) MATCH me<--friend
RETURN friend

假设我们以这个简单的数据库为例,考虑到关系的方向,这将返回节点 celso

  START n=node(*)
    MATCH n
    WHERE n.firstname! ='Alexander'
    RETURN n

此查询匹配属性 firstname 等于 Alexander 的所有节点。请注意“!”符号确保只考虑具有此类属性的节点,从而防止错误。

START n=node(*)
MATCH n
WHERE n.firstname! ='Alexander'
SET n.age = '34'
RETURN n

此查询匹配具有属性 firstname Alexander 的节点并添加另一个属性“age”,其值为“34”

START n = node(*)
MATCH n WHERE n.firstname! = "Geraldo" DELETE n

此查询匹配所有名字等于“Geraldo”的节点并删除它们。

START n = node(*)
MATCH n-[r]-()
DELETE n, r

此命令获取所有节点和关系并将其删除。

希望对你有帮助!

【讨论】:

  • 确实有帮助!很少有语句不起作用,也许是语法?或者我的 Neo4J 版本。
【解决方案2】:

一个非常简短的版本是:

create ({name:"alice"})-[:likes]->({name:"bob"});

match n-[r]->m return n,r,m;

match alice where alice.name! = 'alice' set alice.lastname='Alison';

match alice where alice.lastname! = 'Alison' return alice;

match n-[r]->m delete r,n,m;

这都是使用neo4j 2.0.0M3的语法。

有免费的graph databases 书,其中包含对 cypher 的精彩介绍。书中印刷的示例并非开箱即用。我已将working examples 放在网上。当然,还有more on the neo4j website

【讨论】:

  • 谢谢 Joerg,我只是将您的查询隔开。也许添加neo4j.org/learn/cypher 链接。
  • 第一行有效,匹配的我得到一个错误:“未知命令'匹配'”。我尝试了书中的一些例子,比如莎士比亚;一些命令确实有效,但大多数没有(我不会在这不是这个线程的范围内详细输入)。 Neo4J 没有提供简单的快速入门教程,在做任何实际操作之前必须通过大量的理论。我会看看工作示例链接,谢谢!
  • 我认为您可能使用的是 neo4j 的“稳定”版本 1.9.x。使用上面的语法('match')需要版本 2.x,也就是里程碑(如下面我的示例所述)
  • 是的,就是这样。是否可以创建与稳定版本兼容的代码?欣赏。
【解决方案3】:

很多很棒的资源here - 尤其是免费的书。没用过,但它看起来可能会有所帮助 - 基本上是通过修复损坏的测试来学习 Neo4j:Neo4j-tutorial

【讨论】:

  • 这本书很棒,我会打印出来读完。但是,如前所述,包括您的链接在内的任何地方都没有快速入门教程。指向 Neo4J 站点的第一个链接通过了 looot 理论,我只想开始插入、选择、更新和删除数据。如果您有这 4 行简单的链接,我将不胜感激。第二个链接指向我必须下载、配置和安装的 Java 应用程序;我在问题的底部提到了它:我什至不使用 Java。我说的只是 Neo4J。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 2012-10-07
  • 1970-01-01
相关资源
最近更新 更多