Код: Выделить всё
( ( 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