neo4j - Neo4j:如何添加带有标签名称的列表并确保资产的标签是列表的一部分?
问题描述
我有一个名为“BusinessAssetTypes”的标签。它指定哪些资产是业务资产的一部分。还有一个标签“DataAssetTypes”,它指定哪些标签是数据资产的一部分。
在以下查询中,我手动说:业务资产可以是首字母缩略词、业务术语或 KPI,数据资产可以是列、表或模式——> 查找业务资产和数据资产之间的关系。
MATCH (ba)-[rel]->(da)
WHERE (ba:Acronym OR ba:BusinessTerm OR ba:KPI)
AND (da:Column OR da:Table OR da:Schema)
RETURN ba, da
问题是业务资产列表发生了变化。这就是为什么不应在 WHERE 子句中手动添加它,而应从标签“BusinessAssetTypes”中插入它。
我试图创建一个列表并稍后在查询中使用该列表:
MATCH (bat:BusinessAssetType)
WITH collect(bat.name) AS baType
MATCH (dat: DataAssetTypes)
WITH collect(dat.name) AS daType
MATCH (ba)-[rel]->(da)
WHERE ba IS PART OF baType
AND da IS PART OF daType
RETURN ba, da
预先感谢您的帮助!
解决方案
如果我理解您有目标业务资产标签的动态列表和数据资产标签的动态列表。所以我认为你会寻找的是:
MATCH (bat:BusinessAssetType)
MATCH (dat: DataAssetTypes)
WITH collect(DISTINCT bat.name) AS baType,
collect(DISTINCT dat.name) AS daType
MATCH (ba)-[rel]->(da)
WHERE any(x in labels(ba) WHERE x IN baType)
AND any(y in labels(da) WHERE y in daType)
RETURN ba, da
推荐阅读
- erlang - Erlang:如何杀死 wxe_master/wxe_server gen_server
- python - Python - 将转换矩阵拟合到马尔可夫模型
- amazon-web-services - 如何最小化 AWS k8s 的 Kops 的 IAM 角色权限
- javascript - 在 ReactJS 中解构元素时出现类型错误
- python - 使命令可执行;y 由一个人 discord.py
- visual-studio - 在 Visual Studio 中从控制台跳转到源代码很热门?
- typescript - 从父类的实例实例化扩展类 - Typescript
- javascript - 在leaflet.js中设置geojson元素样式时出现TypeError
- python - SQLAlchemy:通过精确匹配嵌套 JSONB 字段中的键来检索记录
- r - R:检查“今天的”文件是否存在,如果不存在,下载它