如何从浏览器中的先前结果中恢复数据? [英] How can I restore data from a previous result in the browser?

查看:11
本文介绍了如何从浏览器中的先前结果中恢复数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在 neo4j 网络浏览器中运行的查询:

I have a query that I ran in the neo4j web browser:

MATCH p=(z)<-[*]-(a)-[:foo]->(b) WHERE b.value = "bar" return p

这返回了大量连接的节点.发生的事情似乎删除了所有这些节点(在一个单独的事件中),但我仍然有旧查询的输出.浏览器的代码部分列出了响应数据:

This returned a large number of connected nodes. Something happened that seems to have deleted all of these nodes (in a separate incident), but I still have the output of the old query. The code section of the browser has the response data listed:

 ...
 "graph": {
        "nodes": [
          {
            "id": "1148578",
            "labels": [
              "text"
            ],
            "properties": {
              "value": "bar",
              "timestamp": 1478747946867
            }
          },
   ...

有没有办法让我从旧查询的输出中重新创建所有这些数据?

Is there a way for me to recreate all of this data from the output of an old query?

推荐答案

你可以使用 apoc.load.json 来做到这一点.请注意,此解决方案不会保留内部节点 ID.APOC 是一个扩展内置 Neo4j 功能的过程库.

You could use apoc.load.json to do this. Note that this solution will not preserve the internal node ids. APOC is a procedure library that extends built-in Neo4j functionality.

给定 JSON 文件

{"graph": {
        "nodes": [
          {
            "id": "32496",
            "labels": [
              "Person"
            ],
            "properties": {
              "born": 1967,
              "name": "Carrie-Anne Moss"
            }
          },
          {
            "id": "32505",
            "labels": [
              "Movie"
            ],
            "properties": {
              "tagline": "Evil has its winning ways",
              "title": "The Devil's Advocate",
              "released": 1997
            }
          },
          {
            "id": "32494",
            "labels": [
              "Movie"
            ],
            "properties": {
              "tagline": "Welcome to the Real World",
              "title": "The Matrix",
              "released": 1999
            }
          },
          {
            "id": "32495",
            "labels": [
              "Person"
            ],
            "properties": {
              "born": 1964,
              "name": "Keanu Reeves"
            }
          }
        ],
        "relationships": [
          {
            "id": "83204",
            "type": "ACTED_IN",
            "startNode": "32495",
            "endNode": "32505",
            "properties": {
              "role": "Kevin Lomax"
            }
          },
          {
            "id": "83183",
            "type": "ACTED_IN",
            "startNode": "32496",
            "endNode": "32494",
            "properties": {
              "role": "Trinity"
            }
          },
          {
            "id": "83182",
            "type": "ACTED_IN",
            "startNode": "32495",
            "endNode": "32494",
            "properties": {
              "role": "Neo"
            }
          }
        ]
      }
    }
  } 

我们可以使用这个查询重新创建图表:

We can recreate the graph using this query:

CALL apoc.load.json("https://dl.dropboxusercontent.com/u/67572426/small_movie_graph.json") YIELD value AS row
WITH row, row.graph.nodes AS nodes
UNWIND nodes AS node
CALL apoc.create.node(node.labels, node.properties) YIELD node AS n
SET n.id = node.id
WITH row
UNWIND row.graph.relationships AS rel
MATCH (a) WHERE a.id = rel.startNode
MATCH (b) WHERE b.id = rel.endNode
CALL apoc.create.relationship(a, rel.type, rel.properties, b) YIELD rel AS r
RETURN *

这篇关于如何从浏览器中的先前结果中恢复数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆