gpt4 book ai didi

azure - 根据边属性选择顶点

转载 作者:行者123 更新时间:2023-12-03 02:41:19 25 4
gpt4 key购买 nike

我有一个复杂的场景。所以我尝试创建一个示例,如下所示。

g.AddV('class').property('id','1').property('name','class1').AddE('roster').to(g.AddV('student').property('id','11').property('name','student1'))
g.AddV('class').property('id','2').property('name','class2').AddE('roster').to(g.AddV('student').property('id','22').property('name','student2'))
g.AddV('class').property('id','3').property('name','class3').AddE('roster').to(g.AddV('student').property('id','33').property('name','student3'))
g.AddV('class4').property('id','4').property('name','class4').AddE('roster').to(g.V('11'))
g.V('11').AddE('logs').property('class_id','1').to(g.AddV('log').property('id','111').property('name','log1'))

您可能已经观察到,student1 属于 2 个类(class)(class1 和 class4)。并且student1class1中写入日志log1。但是如果我运行这个查询g.V('111').as('l').in().as('s').in().as('c').project('log' ,'学生','类(class)').by(select('l').by('姓名')).by(select('s').by('姓名')).by(select('c ').by('name'))

它返回重复数据,如下所示。

[
{
"log": "log1",
"student": "student1",
"class": "class1"
},
{
"log": "log1",
"student": "student1",
"class": "class4"
}
]

预期行为是仅返回来自 class1 的日志。为了实现这一目标,我在 logs 边缘添加了一个属性 class_id,但不确定如何应用条件来返回重复数据删除的结果,即返回属于同一类的日志。

非常感谢任何有关查询的帮助。

最佳答案

如果您想通过边缘属性过滤学生,您可以使用 where:

g.V().has('name', 'log1').as('l').
inE().as('e').outV().as('s').
in().where(eq('e')).by('class_id').as('c').
project('log', 'student', 'class').
by(select('l').by('name')).
by(select('s').
by('name')).
by(select('c').by('name'))

请注意,我拆分了您的第一个 in 步骤,以便我可以使用边缘属性

示例: https://gremlify.com/3q

关于azure - 根据边属性选择顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61066780/

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