Neo4j和json创建具有多个参数的多个节点

时间:2014-04-07 06:25:19

标签: neo4j jsoncpp

我尝试过很多东西,但没有用。 我之前已经在stackoverflow上提出了一个问题,但我仍然面临同样的问题。 这是旧stackoverflow问题的链接 creating multiple nodes with properties in json in neo4j

让我试着用一个小例子来解释 这是我想要执行的查询

{
   "params" : {
      "props" : [
         {
            "LocalAsNumber" : 0,
            "NodeDescription" : "10TiMOS-B-4.0.R2 ",
            "NodeId" : "10.227.28.95",
            "NodeName" : "BLR_WAO_SARF7"
         }
      ]
   },
   "query" : "MATCH (n:Router) where n.NodeId = {props}.NodeId  RETURN n"}

为简单起见,我只添加了1个道具阵列,否则大约有5000个道具。现在我想执行上面的查询,但它失败了。 我尝试使用(props.NodeId),{props [NodeID]},但一切都失败了。 是否可以访问neo4j中的单个属性?

我的编程是在c ++中,我使用jsoncpp和curl来解决我的问题。

2 个答案:

答案 0 :(得分:2)

如果您在查询中执行{props}.nodeId,则props参数必须是地图,但您传入数组。做

"props" : {
        "LocalAsNumber" : 0,
        "NodeDescription" : "10TiMOS-B-4.0.R2 ",
        "NodeId" : "10.227.28.95",
        "NodeName" : "BLR_WAO_SARF7"
 }

您可以使用简单的CREATE语句将参数数组用于参数。

CREATE ({props})

或者如果循环访问数组以访问各个地图

FOREACH (prop IN {props} | 
    MERGE (i:Interface {nodeId:prop.nodeId})
      ON CREATE SET i = prop
)

答案 1 :(得分:1)

此查询字符串是否适合您?

"MATCH (n:Router) RETURN [p IN {props} WHERE n.NodeId = p.NodeId | n];"