26

我知道可以使用通配符 (*) 符号来返回 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... )?

4

7 回答 7

29

您还不能在 Cypher 中执行此操作。我认为这将是一个很好的功能,如果你想请求它。

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

MATCH (p:Product) WHERE p.price='1950' RETURN keys(p);
于 2013-07-19T02:32:32.710 回答
19

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

我希望这对人们有所帮助。

于 2017-01-19T01:01:15.587 回答
9

只是为了扩展获取密钥:

MATCH (p:product) WITH DISTINCT keys(p) AS keys
UNWIND keys AS keyslisting WITH DISTINCT keyslisting AS allfields
RETURN allfields;
于 2016-12-14T16:02:58.333 回答
2

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

MATCH (n:People) n

这将返回
n:

{
  "Date_of_Birth": "1981-04-23 00:00:00",
  "Employee_Last_Name": "Aaaa",
  "Employee_First_Name": "Baaa",
  "Age": 36,
  "Employee_Status": "Active"
 }
于 2017-12-16T10:38:45.013 回答
1

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

前任:

MATCH p.product where WHERE p.price='1950' RETURN p.price as price, p.title as title, p.whatever, as anythingYouWant
于 2013-07-18T23:27:09.513 回答
0

这篇博文很好地展示了在 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 扩展运算符非常相似。

于 2021-07-01T09:58:38.567 回答
-1

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

MATCH (p:product) RETURN keys(p)

在 Neo4J 3.0 中工作。

于 2016-05-31T14:35:02.097 回答