Имаме много сложна заявка и използваме функцията eval(), за да оценим някои данни.
Но изглежда операторът И не се обработва правилно в eval().
Например:
if(eval('#20:34 IN out[@class='attempts'].in.@rid AND \'b\' IN out[@class='attempts'].choice'), true, false) as attempt_b
В този пример очакваме да получим само данните с @rid от #20:34
И със свойство „избор“ от „b“, което трябва да се върне към true
"out" поле там е $current.@rid на нашата SELECT заявка.
Това са примерните данни:
out ------ in ---- choices
14:3 ---- 20:34 ------ b
14:4 ---- 20:34 ------ a
14:7 ---- 20:34 ------ c
14:8 ---- 20:34 ------ d
Ex: if(eval('#20:34 IN out[@class='attempts'].in.@rid AND \'" + choice + "\' IN out[@class='attempts'].choice'), true, false) as attempt_choice
1.) $current.@rid = #14:3 and choice is 'a'
Return Output: true
Expected output: false (since there is no #20:34 with a choice of "A" in current.@rid which is #14:3)
2.) $current.@rid = #14:3 and choice is 'b'
Return Output: true
Expected output: true
3.) $current.@rid = #14:3 and choice is 'c'
Return Output: true
Expected output: false (since there is no #20:34 with a choice of "c" in current.@rid which is #14:3)
4.) $current.@rid = #14:3 and choice is 'd'
Return Output: true
Expected output: false (since there is no #20:34 with a choice of "d" in current.@rid which is #14:3)`
Не знам дали това е само проблемът с нашата заявка или в orientdb. Ще бъде от голяма полза, ако някой може да ме насочи към това, което искаме да постигнем.