You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j Cypher查询:过滤节点中含指定子串的字符串数组

解决方案

情况1:n.string 本身是字符串数组类型

如果Node节点的string属性是字符串数组(比如值为["abc","def","abcde"]),可以用filter函数筛选匹配子串的元素,同时返回节点本身:

MATCH (n:Node)
WITH n, filter(s IN n.string WHERE s CONTAINS $searchTerm) AS matchedStrings
WHERE size(matchedStrings) > 0
RETURN n, matchedStrings

说明

  • filter函数遍历n.string数组,仅保留包含搜索关键词$searchTerm的元素,结果存入matchedStrings
  • WHERE size(matchedStrings) > 0确保只返回存在匹配结果的节点
  • $searchTerm为参数化变量,执行查询时传入具体值(例如"bc")

情况2:n.string 是逗号分隔的字符串类型

如果Node节点的string属性是单个逗号分隔字符串(比如值为"abc,def,abcde"),需先拆分字符串为数组再筛选:

MATCH (n:Node)
WITH n, split(n.string, ",") AS stringArray
WITH n, stringArray, filter(s IN stringArray WHERE s CONTAINS $searchTerm) AS matchedStrings
WHERE size(matchedStrings) > 0
RETURN n, matchedStrings

说明

  • 先用split(n.string, ",")将逗号分隔的字符串拆分为数组
  • 后续逻辑与数组类型场景一致,筛选匹配元素后返回

示例验证

假设节点的string数组为["abc","def","abcde"],传入$searchTerm = "bc",查询会返回:

  • 目标节点n
  • matchedStrings为["abc","abcde"],完全符合需求。

内容的提问来源于stack exchange,提问作者footiefan92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:52:47