Orientdb getVertices() возвращает вершину для любой метки, присутствующей в базе данных

#orientdb #orientdb-2.1 #orientdb2.2

#orientdb #orientdb-2.1 #orientdb2.2

Вопрос:

Я использую Orientdb 2.2.10.

Чего я хочу добиться?

Я хочу получить вершину определенного vertexType — например, vertexType = ‘Person’ .

Мой graphdb индексируется уникальным ключом (‘uid’).

Что я делаю для ее достижения?

  • getVertices(ярлык, []iKey, []IValue)
  • Я получаю желаемую вершину

в чем проблема с этим методом? :-

  • Я получаю желаемую вершину, даже если я предоставляю имя любой метки (которая присутствует в базе данных)

например:-

  • Я хочу получить вершину vertextype = ‘Person’, имеющую uid = ‘ram’

  • Я получаю эту вершину, даже когда предоставляю любую метку (например, «Отношение»), которая присутствует в базе данных.

Это ошибка или я делаю что-то не так?

Спасибо ..!

Ответ №1:

Я скопировал вашу структуру.

введите код здесь

Я пробовал с этим кодом

 String [] keys=new String[]{"uid"};
String [] values=new String[]{"ram"};
Iterable<Vertex> it= g.getVertices("Person", keys, values);
for(Vertex v:it){
    System.out.println(v.getId());
    System.out.println(v.getProperty("uid"));
}
  

и я получил

# 21: 0 ОЗУ

в то время как с

 String [] keys=new String[]{"uid"};
String [] values=new String[]{"ram"};
Iterable<Vertex> it= g.getVertices("Relational", keys, values);
for(Vertex v:it){
    System.out.println(v.getId());
    System.out.println(v.getProperty("uid"));
}
  

Я ничего не получил.

Надеюсь, это поможет.

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

1. когда я снова попробовал это, не выполняя индексацию по ‘uid’ , я также ничего не получаю. Но с индексацией по ‘uid’ я получаю результат

2. пожалуйста, попробуйте это с индексацией по ‘uid’

3. пожалуйста, взгляните на ( codepad.co/snippet/638utVcY ), код выходной результат.

4. Я использовал эти индексы Person.uid UNIQUE [«uid»] SBTREE и Relational.uid UNIQUE [«uid»] SBTREE

5. ваша версия 2.2.10?