发布
社区首页 >问答首页 >新密码查询和从键访问值

新密码查询和从键访问值
EN

Stack Overflow用户
提问于 2015-09-21 02:12:08
回答 1查看 73关注 0票数 0

使用新参数调用neo4j (cy/tQueryCon节点-query {:_nodeid _nodeid})之后,如何执行访问函数以从从neo4j数据存储响应返回的键中获取属性值?

例如,如果这个对象是来自neo4j数据存储的响应,那么我应该使用什么新的语法来访问存储在键“属性”中的值?

代码语言:javascript
代码运行次数:0
复制
[ {
  "id": "letter-a",
  "name": "Letter A",
  "attributes": [ ... ]
}]

目前,我只能获得(第一个_response),但是( get -in (第一个_response):属性)将返回零。

*编辑*

下面是用作参数调用tquery函数的cypher查询字符串:

代码语言:javascript
代码运行次数:0
复制
(def node-query "MATCH (n)-[attributelist:RELATIONSHIPTYPE]->(target)
                 RETURN n.id          AS id, 
                        n.name        AS name, 
                        COLLECT({
                          target    : target.id
                        })            AS attributes;")

我不明白哪种类型的变量tquery返回?当客户端在浏览器中一直显示它时,它看起来就像这个对象:

代码语言:javascript
代码运行次数:0
复制
[
  {
    "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“的数组值,以便在向客户端交付重建的对象响应之前可以运行一个减(计数)报告。

代码语言:javascript
代码运行次数:0
复制
{
    ...
    "attributes" : {
        "node-id-one"     : 1,
        "node-id-two"     : 3,
        "node-id-three"   : 1
    }
}

但是我遇到了问题,因为我不知道从tquery返回的对象中访问“属性”键的语法。

EN

回答 1

Stack Overflow用户

发布于 2015-09-21 07:21:51

对不起,我不明白你的问题。您使用tquery运行了哪个查询?

通常,您直接从查询中返回您感兴趣的数据。

e.g

代码语言:javascript
代码运行次数:0
复制
MATCH (p:Person)-[:ACTED_IN]->(m) 
WHERE p.name = "Tom Hanks" 
RETURN m.title, m.released`

否则,您将不得不使用标签+唯一属性进行请求。

代码语言:javascript
代码运行次数:0
复制
MATCH (m:Movie) 
WHERE m.title = "The Matrix"
RETURN m.title, m.released`

或者节点id匹配。

代码语言:javascript
代码运行次数:0
复制
MATCH (m:Movie) 
WHERE id(m) = 123
RETURN m.title, m.released`

您通常使用参数而不是文字值,即{name}{title}{id}

更新

我认为,为了拦截,您必须研究新保守主义的实现。

注意:没有服务器,它是一个带有http端点的Neo4j服务器。

你应该能够在密码中(几乎)做你想做的事。

代码语言:javascript
代码运行次数:0
复制
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)节点使用一个标签。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32686394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档