繁体   English   中英

如何使用 Cypher 返回节点的所有属性?

[英]How can I return all properties for a node using Cypher?

我知道可以使用通配符 (*) 符号返回 Cypher 查询中的所有引用,例如:

MATCH p:Product WHERE p.price='1950' RETURN *;

  ==> +----------------------------------------------------------------+
  ==> | p                                                              |
  ==> +----------------------------------------------------------------+
  ==> | Node[686]{title:"Giorgio Armani Briefcase",price:"1950",...    |
  ==> +----------------------------------------------------------------+

但是,结果是具有名为“p”的单个节点“列”的行,可以从中访问属性。 但是,我希望结果集“行”的属性名称为“列”。 就像是:

MATCH p:Product WHERE p.price='1950' RETURN p.*;

  ==> +-------------------------------------------+
  ==> | title | price | ...                       |
  ==> +-------------------------------------------+
  ==> | "Giorgio Armani Briefcase" | "1950" | ... |
  ==> +-------------------------------------------+

该特定查询无效,但有没有办法实现相同的结果(没有明确列出所有属性,如 p.title,p.price,p... )?

你还不能在 Cypher 中做到这一点。 我认为这将是一个不错的功能,如果你想请求它。

编辑(感谢评论指出):您现在可以从 2.2 开始执行此操作:

MATCH (p:Product) WHERE p.price='1950' RETURN keys(p);

在最新版本的 cypher properties(n)将返回节点的所有键和属性。 不过似乎只适用于单个节点。

我希望这可以帮助人们。

只是为了扩展获取密钥:

MATCH (p:product) WITH DISTINCT keys(p) AS keys
UNWIND keys AS keyslisting WITH DISTINCT keyslisting AS allfields
RETURN allfields;

您可以在密码查询中返回n ,它将返回节点的所有键和属性。 例如。:

MATCH (n:People) n

这将返回
ñ:

{
  "Date_of_Birth": "1981-04-23 00:00:00",
  "Employee_Last_Name": "Aaaa",
  "Employee_First_Name": "Baaa",
  "Age": 36,
  "Employee_Status": "Active"
 }

您可以使用“as”子句并标识每个属性以及您希望列命名的内容。 但是,您必须确定要单独返回的每个属性。

前任:

MATCH p.product where WHERE p.price='1950' RETURN p.price as price, p.title as title, p.whatever, as anythingYouWant

这篇博文很好地展示了在 Neo4J 中操作结果

如果你只想得到钥匙,上面的反应很好。

如果您只想获取属性对象,而不需要

"identity": 16,
"labels": ["Post"],
"properties": { ... }

你可以做:

MATCH p:Product WHERE p.price='1950' RETURN p{.*};

这是一个涉及列表的高级示例:

MATCH (post:Post)-[:HAS_JOB]-(job)
OPTIONAL MATCH(post)-[:HAS_LIKE]-(like)
OPTIONAL MATCH (post)-[:HAS_USER]-(user)
WITH post, job, user, collect(like{.*}) as likes
RETURN post{
    .*,
    likes: likes,
    job: job{.*},
    user: user{.*}
};

结果示例:

{
    "id": "ec704f3b-ce10-4f23-bd06-6d668b7db488",
    "title": "Science Summer"
    "job": {
            "id": "81ae08e4-57d6-4997-9cb8-407e13bc30c6",
            ...
        },
    "user": null,
    "likes": [
        {
            "id": "2209e3a9-701d-4842-9d6b-d4dc8428bac6",
            "name": "alex",
            ...
        }
    ],
}

这与JavaScript 展开运算符非常相似。

我是 cypher 的新手,但似乎这会返回特定类型节点的所有键:

MATCH (p:product) RETURN keys(p)

适用于 Neo4J 3.0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM