graph-databases - 涉及边缘属性数量检查的 gremlin 查询
问题描述
我有图形数据库的这个模式。
对于X ,我需要找到从它所连接picked
的所有标签进行呼叫的用户。calls
program
我对小精灵很陌生,我的词汇量有限。
我想找到一种方法来检查用户的传入边picked == yes
数是否与给定 X 的用户传入边的总数相同program
。(也就是说,如果从程序 X 通过调用到用户的每条边都包含挑选==是的)
我无法在同一个查询中计算两次并比较这些值以确定用户是否满足条件。我的方法如下:
g.V().hasLabel("User").filter(inE().count().is(neq(0))).filter(inE().outV().in().has("program","name","X")).filter(inE().has("connected","yes").has("picked","no").count().is(eq(0))).values("name")
本质上,我删除了所有我知道不会导致我预期结果的情况(用户中的空节点,连接但未接听的用户)。当我根据手动检查结果对其进行测试时,这不会产生正确的输出。
谢谢!
解决方案
仅从描述中,我会说这是您的查询:
g.V().hasLabel('User').
filter(project('a','b').
by(inE().has('picked','yes').count()).
by(out().has('program','X').count()).
where('a',eq('b')))
如果这没有返回预期结果,那么请提供一个片段,该片段创建一个小样本图以及预期结果。
推荐阅读
- javascript - 为每个 ajax 响应组合 HTML 元素
- spring - Feign 客户端返回错误的完整响应
- mysql - hive 数据库的 if 语句或条件
- ios - 如何快速组合多个 NSString.CompareOptions?
- python - 如何从熊猫数据框创建位置标记到 folium 地图
- android - 如何获取BLE适配器的本地名称和MAC地址?
- excel - 表格多维数据集 - Excel 过滤在节点级别不起作用
- android - 如何使用带有 LazyVerticalGrid 的 jetpack 组合分页
- graphql - 为什么仪表板中显示的动物数据库与通过 CLI 创建的不同?
- terraform - 如何在嵌套地图上按循环创建集合