Длинное прохождение гремлина не возвращает данныеJAVA

Программисты JAVA общаются здесь
Anonymous
Длинное прохождение гремлина не возвращает данные

Сообщение Anonymous »

Я пытаюсь разрешить один случай, когда я хочу извлечь данные из базы данных OrientDB на основе некоторого фильтра. Он имеет 2 атрибута "name" и "mobile_number" . Я хочу получить только эти ряды, для которых совпадают «имя» и «mobile_number».

Код: Выделить всё

( ( Name = A AND Mobile_Number = 1 ) OR ( Name = B AND Mobile_Number = 2 ) OR ( Name = C AND Mobile_Number = 3 ) OR ( Name = D AND Mobile_Number = 4 ) OR ( Name = E AND Mobile_Number = 5 ) )

Если я преобразую это в Gremlin Traversal, это становится как:

Код: Выделить всё

[GraphStep(vertex,[]), HasStep([~label.eq(Vertex_Class)]), AndStep([[OrStep([[OrStep([[OrStep([[OrStep([[AndStep([[HasStep([Mobile_Number.eq(1)])], [HasStep([Name.eq(A)])]])], [AndStep([[HasStep([Mobile_Number.eq(2)])], [HasStep([Name.eq(B)])]])]])], [AndStep([[HasStep([Mobile_Number.eq(3)])], [HasStep([Name.eq(C)])]])]])], [AndStep([[HasStep([Mobile_Number.eq(4)])], [HasStep([Name.eq(D)])]])]])], [AndStep([[HasStep([Mobile_Number.eq(5)])], [HasStep([Name.eq(E)])]])]])]])]

и вышеупомянутая Traversal возвращает правильные 5 строк из базы данных.

Код: Выделить всё

( ( Name = A AND Mobile_Number = 1 ) OR ( Name = B AND Mobile_Number = 2 ) ..... ( Name = CV AND Mobile_Number = 100 ) )< /code> < /p>
Несмотря на то, что проезд создается, как ниже:
[GraphStep(vertex,[]), HasStep([~label.eq(Vertex_Class)]), AndStep([[OrStep([[OrStep([[OrStep([[OrStep.......([[AndStep([[HasStep([Mobile_Number.eq(1)])], [HasStep([Name.eq(A)])]])], [AndStep([[HasStep([Mobile_Number.eq(2)])], [HasStep([Name.eq(B)])]])]])], ......., [AndStep([[HasStep([Mobile_Number.eq(100)])], [HasStep([Name.eq(CV)])]])]])]])]

gremlin, застрявший в цикле и никогда не возвращает ничего и не заканчивается.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... rning-data

Вернуться в «JAVA»