gpt4 book ai didi

java - 如何在 neo4j 中使用 cypher 查询集合?

转载 作者:行者123 更新时间:2023-11-30 08:51:16 25 4
gpt4 key购买 nike

我在 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

这会返回所有带有给定标签的节点。但是如果我使用下面的查询

MATCH (node) WHERE node.tags = ['tag1'] RETURN node

它不会返回任何节点。

此外,如果我更改顺序,假设 ['tag2','tag1'] 它不会返回任何节点。

下面是我的 Controller 方法:

@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

参见 http://neo4j.com/docs/2.2.2/query-predicates.html

关于java - 如何在 neo4j 中使用 cypher 查询集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30637689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com