我有一个名为“flavors”的属性的节点,其中包括这样的数据元组:
node1.flavors = {"cherry":174,"vanilla":105,"chocolate":60}
node2.flavors = {"cherry":17,"vanilla":10,"chocolate":300}
我想找到与巧克力相关的最大整数的节点,即 node2。我怎样才能做到这一点?
我想出了如何使用正则表达式来获取巧克力在风味属性中的那些:
start n=node(*)
WHERE has(n.flavors) AND n.flavors =~ '.*chocolate.*'
RETURN count(n);
现在我只需要得到 "chocolate": _之后的数字。
更多信息:这是一个 JSON 字符串。如果我不能在 cypher 中处理它,我将不得不在 Ruby 中处理它并在 neo4j 中重新构建数据模型。我相信我不能使用子字符串,因为我们在属性上没有 indexOf 函数,对吧?
2.0.0p247 :002 > r = JSON.parse('{"vanilla":161,"chocolate":21,"cherry":18}')
=> {"vanilla"=>161, "chocolate"=>21, "cherry"=>18}
2.0.0p247 :004 > r.class
=> Hash
2.0.0p247 :005 > r.keys
=> ["vanilla", "chocolate", "cherry"]
2.0.0p247 :006 > r.values
=> [161, 21, 18]
2.0.0p247 :007 > r["vanilla"]
=> 161