【问题标题】:Naming a Index using cypher for neo4j 2.0使用 cypher 为 neo4j 2.0 命名索引
【发布时间】:2014-05-25 19:23:56
【问题描述】:

假设我有一个图表,其中每个用户都有标签“用户”和属性“名称” 根据 Neo4j 2.0 文档,我们可以使用以下密码命令创建索引

CREATE INDEX ON :user(name);

但是,如果使用 START 子句编写 Cypher 查询,例如:

start n=node:user(name='john') return n

然后我收到以下错误

MissingIndexException: Index `user` does not exist

我的问题是如何首先定义索引的名称。我知道在 Neo4j 2.0 中使用 start 子句是可选的。但是,如果我需要使用它们,最好的方法是什么

【问题讨论】:

    标签: indexing neo4j cypher graph-databases


    【解决方案1】:

    您正在混合旧索引和新的 2.0 基于标签的索引的概念。不要使用START 子句,而是使用MATCH 子句,如下所示:

    MATCH (n:user)
    WHERE n.name='john' // this causes an index lookup
    RETURN n
    

    另请注意,Cypher 样式通常使用首字母大小写名称作为标签,例如 :User。标签区分大小写。

    【讨论】:

    • MATCH (n:user {name: 'john'}) RETURN n 不会也触发索引查找吗?
    • 是的。我不想同时给出两者来限制混淆,但是确实如此。对于大多数事情,我个人更喜欢 WHERE 语法。
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多