如何在 neo4j 中使用 cypher 查询集合?
How to query collection using cypher in neo4j?
我在 neo4j 中有一个节点,其结构如下所示:
{
"nodeId": 32,
"id": "0290cf88-3345-4c30-8e5f-7ce0cb3f0b6b",
"type": "User",
"name": "Mahendra",
"index": 0,
"data": "This is sample user",
"description": null,
"contentBlocks": [],
"icon": null,
"createdOn": null,
"modifiedOn": null,
"properties": {
"displayName": "Mahendra",
"lastName": "Kawde"
},
"tags": [
"tag1",
"tag2"
],
"categories": null
}
现在我想通过将标签作为参数传递给我的密码查询来获取所有节点。
我正在使用以下查询:
MATCH (node) WHERE node.tags = ['tag1','tag2'] RETURN node
这 return 是我所有具有给定标签的节点。
但是如果我使用下面的查询
MATCH (node) WHERE node.tags = ['tag1'] RETURN node
它没有 return 我的任何节点。
此外,如果我更改顺序,可以说 ['tag2','tag1'] 它不会 return 给我任何节点。
下面是我的控制器方法:
@RequestMapping(value = "/getByTag",method = RequestMethod.GET, consumes=MediaType.APPLICATION_JSON, produces=MediaType.APPLICATION_JSON)
public Result<Node> getByTag(@RequestParam(value="tags") List<String> tags) throws EntityNotFoundException {
return nodeService.getByTag(tags);
}
服务方式:
public Result<Node> getByTag(List<String> tags) {
HashMap params = new HashMap();
params.put("type",tags);
String query = "MATCH (node) WHERE node.tags = "+ tags +" RETURN node";
Result<Node> nodes = neo4jTemplate.query(query, params).to(Node.class);
return nodes;
}
你能给我一个使用集合的方法吗,更准确地说 List<String>
在密码查询中?
请帮忙
怎么样
MATCH (node)
WHERE ALL (x IN ['tag1','tag2'] WHERE x in node.tags)
RETURN node
我在 neo4j 中有一个节点,其结构如下所示:
{
"nodeId": 32,
"id": "0290cf88-3345-4c30-8e5f-7ce0cb3f0b6b",
"type": "User",
"name": "Mahendra",
"index": 0,
"data": "This is sample user",
"description": null,
"contentBlocks": [],
"icon": null,
"createdOn": null,
"modifiedOn": null,
"properties": {
"displayName": "Mahendra",
"lastName": "Kawde"
},
"tags": [
"tag1",
"tag2"
],
"categories": null
}
现在我想通过将标签作为参数传递给我的密码查询来获取所有节点。 我正在使用以下查询:
MATCH (node) WHERE node.tags = ['tag1','tag2'] RETURN node
这 return 是我所有具有给定标签的节点。 但是如果我使用下面的查询
MATCH (node) WHERE node.tags = ['tag1'] RETURN node
它没有 return 我的任何节点。
此外,如果我更改顺序,可以说 ['tag2','tag1'] 它不会 return 给我任何节点。
下面是我的控制器方法:
@RequestMapping(value = "/getByTag",method = RequestMethod.GET, consumes=MediaType.APPLICATION_JSON, produces=MediaType.APPLICATION_JSON)
public Result<Node> getByTag(@RequestParam(value="tags") List<String> tags) throws EntityNotFoundException {
return nodeService.getByTag(tags);
}
服务方式:
public Result<Node> getByTag(List<String> tags) {
HashMap params = new HashMap();
params.put("type",tags);
String query = "MATCH (node) WHERE node.tags = "+ tags +" RETURN node";
Result<Node> nodes = neo4jTemplate.query(query, params).to(Node.class);
return nodes;
}
你能给我一个使用集合的方法吗,更准确地说 List<String>
在密码查询中?
请帮忙
怎么样
MATCH (node)
WHERE ALL (x IN ['tag1','tag2'] WHERE x in node.tags)
RETURN node