labels
.var client = new Neo4jClient("http://neo4j:7474")
var andres = new NeoNode
andres.labels.add_all(["Human", "Male"])
client.save_node(andres)
var kate = new NeoNode
kate.labels.add_all(["Human", "Female"])
client.save_node(kate)
var nodes = client.nodes_with_labels(["Human", "Male"])
assert nodes.has(andres)
assert not nodes.has(kate)
# Retrieve nodes belonging to all the specified `labels`.
#
# var client = new Neo4jClient("http://neo4j:7474")
#
# var andres = new NeoNode
# andres.labels.add_all(["Human", "Male"])
# client.save_node(andres)
# var kate = new NeoNode
# kate.labels.add_all(["Human", "Female"])
# client.save_node(kate)
#
# var nodes = client.nodes_with_labels(["Human", "Male"])
# assert nodes.has(andres)
# assert not nodes.has(kate)
fun nodes_with_labels(labels: Array[String]): Array[NeoNode] do
assert not labels.is_empty
# Build the query.
var buffer = new Buffer
buffer.append "match (n) where \{label_0\} in labels(n)"
for i in [1..labels.length[ do
buffer.append " and \{label_{i}\} in labels(n)"
end
buffer.append " return n"
var query = new CypherQuery.from_string(buffer.write_to_string)
for i in [0..labels.length[ do
query.params["label_{i}"] = labels[i]
end
# Retrieve the answer.
var res = cypher(query)
var nodes = new Array[NeoNode]
for json in res.as(JsonObject)["data"].as(JsonArray) do
var obj = json.as(JsonArray).first.as(JsonObject)
var node = load_node(obj["self"].to_s)
node.internal_properties = obj["data"].as(JsonObject)
nodes.add node
end
return nodes
end
lib/neo4j/neo4j.nit:236,2--275,4