У меня сложный сценарий. Поэтому я попытался создать образец, как показано ниже.
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 классам (class1 и class4). И student1
пишет лог log1
в class1
. Но если я выполню этот запрос g.V('111').as('l').in().as('s').in().as('c').project('log','student','class').by(select('l').by('name')).by(select('s').by('name')).by(select('c').by('name'))
Он возвращает дубликаты данных, как показано ниже.
[
{
"log": "log1",
"student": "student1",
"class": "class1"
},
{
"log": "log1",
"student": "student1",
"class": "class4"
}
]
Ожидаемое поведение - возвращать только журнал из class1. Чтобы добиться этого, я добавил свойство class_id
к краю logs
, но не уверен, как применить условие для возврата дедуплицированного результата, т.е. возвращает журналы, принадлежащие к одному и тому же классу.
Любая помощь с запросом высоко ценится .