[英]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.