arrays - 在 Neo4j 中使用 apoc.load.jason() 时如何拥有一组 Json 键对象?
问题描述
我有以下 Json,我想为每个随机哈希 id 的键创建节点,我还需要这些哈希键将它们的嵌套对象作为节点展开。我怎样才能有一个包含这些哈希键的对象数组(不是字符串数组)。EX 数组 = [bacf06771e0f4fc5a8e68c30fc77c9c4,948eeebd73564adab7dee5c6f177b3b9]。我需要 UNWIND array[0].arg1 AS arg1
{
"bacf06771e0f4fc5a8e68c30fc77c9c4":{
"arg1":"the Treasury",
"arg2":"details of the November refunding",
"relation":"will announce",
"id":"bacf06771e0f4fc5a8e68c30fc77c9c4",
"linkedContexts":[
{
"targetID":"948eeebd73564adab7dee5c6f177b3b9",
"classification":"CONTRAST"
}
]
},
"948eeebd73564adab7dee5c6f177b3b9":{
"arg1":"the funding",
"arg2":"",
"relation":"will be delayed",
"id":"948eeebd73564adab7dee5c6f177b3b9",
"linkedContexts":[
{
"targetID":"006a71e51295440fab7a8e8c697d2ba6",
"classification":"CONDITION"
}
]
}
}
我试过了:
Call apoc.load.json("files:/example.json") Yield value
unwind value.sentences as v
foreach (k in keys(v)|merge (arg1:Arg1 {subject:k.arg1})
merge (arg2:Arg2 {object:k.arg2})
merge (arg1)-[:Related_to]->(arg2))
并得到错误:
`Neo.ClientError.Statement.SyntaxError: Type mismatch: expected Any,
Map,Node, Relationship, Point, Duration, Date, Time, LocalTime,
LocalDateTime or DateTime but was String
(line 8, column 27 (offset:371)):"merge (arg1:Arg1 {subject:k.arg1})"
解决方案
value
没有sentences
钥匙。
如果您的数据文件与显示的完全相同,则以下查询应该可以工作。
CALL apoc.load.json("files:///example.json") YIELD value
FOREACH (v in [k IN KEYS(value) | value[k]] |
MERGE (arg1:Arg1 {subject:v.arg1})
MERGE (arg2:Arg2 {object:v.arg2})
MERGE (arg1)-[:Related_to]->(arg2))
此列表推导生成地图的子图列表value
:
[k IN KEYS(value) | value[k]]
或者,您可以使用UNWIND
而不是FOREACH
如下:
CALL apoc.load.json("files:///example.json") YIELD value
UNWIND [k IN KEYS(value) | value[k]] AS v
MERGE (arg1:Arg1 {subject:v.arg1})
MERGE (arg2:Arg2 {object:v.arg2})
MERGE (arg1)-[:Related_to]->(arg2)
推荐阅读
- sql-server-2012 - 分组计数的运行总计
- node.js - Express JS Web 应用程序上的用户登录和身份验证
- python - Python/Tkinter - 将按钮状态写入文件以在下次启动时自动重新应用?
- javascript - 通过 JavaScript 分配 div 的宽度和高度时,边框不工作?
- git - git给出关于在cmd中运行vim的错误
- javascript - 任何人都可以解释 node.js 中的请求库吗?
- php - 重写路由关闭 301 重定向到 Laravel 中的控制器
- javascript - 两个数组是同步变化的,可能是VUE的一个bug
- java - 过滤机会枚举并根据随机机会选择一个
- vue.js - vue jsx组件的“数据未定义”