英文:
What does separate curly bracket means in Cypher?
问题
我已阅读文档,并发现花括号通常用于形成子查询,或者用于描述节点或关系的属性。
但我注意到有时花括号被单独使用,我不明白它究竟在做什么。
以下是一些单独使用花括号的示例:
MATCH (p:Person)
RETURN
p,
p.name AS name,
toUpper(p.name),
coalesce(p.nickname, 'n/a') AS nickname,
{name: p.name, label: head(labels(p))} AS person // 这句话在做什么?
MATCH (e:Entity)-[r1:{}]-(t1:Entity)
WHERE e.lid IN {{qids}} AND e.name <> ""
WITH e, r1, t1
OPTIONAL MATCH (t1)-[r2]-(t2:Entity)
WHERE t1.name = ""
AND t2.name <> ""
AND t2 <> e
WITH e, r1, t1, r2, t2
WHERE t1.name <> "" OR (t2 IS NOT NULL AND t2.name <> "")
RETURN e,
{ name : r1.name, labelId: r1.labelId, type: type(r1) } as r1, // 这个
t1,
{ name : r2.name, labelId: r2.labelId, type: type(r2) } as r2, // 和这个
t2
ORDER BY t2.score IS NOT NULL DESC, t1.score IS NOT NULL DESC,
t2.score DESC, t1.score DESC
LIMIT 20
提前致以诚挚的感谢!
英文:
I have read the document, and i found that curly brackets are normally used to form a subquery or it can be used to describe the properties of a node or relationships.
But i notice that some times curly brackets are used separately, and i can't understand what exactly it was doing.
Here are some example of curly brackets used separately:
MATCH (p:Person)
RETURN
p,
p.name AS name,
toUpper(p.name),
coalesce(p.nickname, 'n/a') AS nickname,
{name: p.name, label: head(labels(p))} AS person // what is this sentence doing?
MATCH (e:Entity)-[r1:{}]-(t1:Entity)
WHERE e.lid IN {{qids}} AND e.name <> ""
WITH e, r1, t1
OPTIONAL MATCH (t1)-[r2]-(t2:Entity)
WHERE t1.name = ""
AND t2.name <> ""
AND t2 <> e
WITH e, r1, t1, r2, t2
WHERE t1.name <> "" OR (t2 IS NOT NULL AND t2.name <> "")
RETURN e,
{ name : r1.name, labelId: r1.labelId, type: type(r1) } as r1, // this
t1,
{ name : r2.name, labelId: r2.labelId, type: type(r2) } as r2, // and this
t2
ORDER BY t2.score IS NOT NULL DESC, t1.score IS NOT NULL DESC,
t2.score DESC, t1.score DESC
LIMIT 20
many thanks in advance!
答案1
得分: 1
你正在创建一个键值对的映射。类似于
{ name: "Some-name", labelId: "some-value" ... }
英文:
You are essentially creating a map of key value pairs. Along the lines of
{ name: "Some-name", labelId: "some-value" ... }
答案2
得分: 0
Kevin的答案是正确的。
在这里,您正在定义一个名为Person的节点。键-值对用于定义所讨论节点的属性。
MATCH (p:Person)
RETURN
p,
p.name AS name,
toUpper(p.name),
coalesce(p.nickname, 'n/a') AS nickname,
{name: p.name, label: head(labels(p))} AS person
{name: p.name, label: head(labels(p))}
在这里,您正在定义{key1: value1, key2: value2}。
这是在大多数编程语言中表示从接口定义对象的方式。
英文:
Kevin's answer is correct.
You are defining a node here Person. The Key-value pair is to define the properties of the node in question.
MATCH (p:Person)
RETURN
p,
p.name AS name,
toUpper(p.name),
coalesce(p.nickname, 'n/a') AS nickname,
{name: p.name, label: head(labels(p))} AS person
{name: p.name, label: head(labels(p))}
Here, you're defining {key1: value1, key2: value2}.
This is a representation of what would be considered defining an object from an interface in most programming languages.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论