使用新参数调用neo4j (cy/tQueryCon节点-query {:_nodeid _nodeid})之后,如何执行访问函数以从从neo4j数据存储响应返回的键中获取属性值?
例如,如果这个对象是来自neo4j数据存储的响应,那么我应该使用什么新的语法来访问存储在键“属性”中的值?
[ {
"id": "letter-a",
"name": "Letter A",
"attributes": [ ... ]
}]
目前,我只能获得(第一个_response),但是( get -in (第一个_response):属性)将返回零。
*编辑*
下面是用作参数调用tquery函数的cypher查询字符串:
(def node-query "MATCH (n)-[attributelist:RELATIONSHIPTYPE]->(target)
RETURN n.id AS id,
n.name AS name,
COLLECT({
target : target.id
}) AS attributes;")
我不明白哪种类型的变量tquery返回?当客户端在浏览器中一直显示它时,它看起来就像这个对象:
[
{
"id": "node-999990a0a0a0sa0",
"name": "Node Name",
"attributes": [
{
"target": "node-id-one"
},
{
"target": "node-id-two"
},
{
"target": "node-id-two"
},
{
"target": "node-id-two"
},
{
"target": "node-id-three"
}
]
}
]
但是,我希望在clojure服务器将tquery传递给客户端之前拦截从tquery返回的内容,并且我希望操作键"attributes“的数组值,以便在向客户端交付重建的对象响应之前可以运行一个减(计数)报告。
{
...
"attributes" : {
"node-id-one" : 1,
"node-id-two" : 3,
"node-id-three" : 1
}
}
但是我遇到了问题,因为我不知道从tquery返回的对象中访问“属性”键的语法。
发布于 2015-09-21 07:21:51
对不起,我不明白你的问题。您使用tquery运行了哪个查询?
通常,您直接从查询中返回您感兴趣的数据。
e.g
MATCH (p:Person)-[:ACTED_IN]->(m)
WHERE p.name = "Tom Hanks"
RETURN m.title, m.released`
否则,您将不得不使用标签+唯一属性进行请求。
MATCH (m:Movie)
WHERE m.title = "The Matrix"
RETURN m.title, m.released`
或者节点id匹配。
MATCH (m:Movie)
WHERE id(m) = 123
RETURN m.title, m.released`
您通常使用参数而不是文字值,即{name}
、{title}
、{id}
。
更新
我认为,为了拦截,您必须研究新保守主义的实现。
注意:没有服务器,它是一个带有http端点的Neo4j服务器。
你应该能够在密码中(几乎)做你想做的事。
MATCH (n)-[:RELATIONSHIPTYPE]->(target)
WITH n, target.id as target, count(*) as c
RETURN n.id as id, n.name as name, collect([target,c]) as targets;
不幸的是,现在Cypher中没有动态映射键,所以元组集合必须要做。
PS
您应该至少为您的n
(和可选的target
)节点使用一个标签。
https://stackoverflow.com/questions/32686394
复制相似问题