Как получить вершину, используя свойство vertex для Java-приложения?

#java #gremlin #graph-databases #tinkerpop #janusgraph

#java #gremlin #граф-базы данных #tinkerpop #janusgraph

Вопрос:

У нас есть User.java класс.

 public class User{
 

    private String name;
    private List<String> phone;

   //setters and getters
}
 

Внутри этого созданного узла

 {
   "name": "Ibney",
   "phone": ["123","704","456"]
}
 

теперь я хочу получить вершину пользователя с помощью телефона. У меня есть список телефонных номеров, но другой, и один из строк 704 совпадает.
Как получить пользовательскую вершину. Используя любой
Я использую так

 List<String> phone = new ArrayList<>();
phone.add("204");
phone.add("704");

List<Vertex> vertex = g.V().hasLabel(label.getLabel()).has(phone, P.within(phone)).toList(); 

 

значение совпадения равно 704, но, к сожалению, это не работает.

Комментарии:

1. Вы создали этот список, используя мета-свойства (три property шага), или вы просто сохранили список Java в свойстве?

2. @KelvinLawrence это всего лишь пример. Я передаю List<String> phone в параметр метода.

3. Я добавил ответ ниже, который объясняет, что вы видите.

Ответ №1:

Если вы сохраняете свойство как фактический список Java within , шаг не будет заглядывать внутрь него. Вам unfold это нужно. В соответствии с:

 gremlin> phone = ["123","704","456"] 
gremlin> g.addV('test').property('phone',phone)  

==>v[60867]

gremlin> g.V().has('phone').where(values('phone').unfold().is(within(phone)))

==>v[60867]
 

Однако не все базы данных поддерживают прямое хранение типов Java, таких как список. Для большей гибкости вы можете создать свой список с помощью.

 gremlin> g.addV('test').
......1>       property(list,'phone',"123"). 
......2>       property(list,'phone',"704"). 
......3>       property(list,'phone',"456")

==>v[60869]

gremlin> g.V().has('phone',within(phone))

==>v[60869]    
    
 

Комментарии:

1. Я думаю, что это не будет работать на Java? Я думаю, что есть какая-то проблема. Для меня это не идеальный ответ. спасибо, сэр

2. Почему вы говорите, что это не будет работать на Java? — Я все время делаю это на Java