Я играл с базой данных OrientDB о Grateful Dead.SELECT EXPAND vs TRAVERSE
Я изо всех сил пытаюсь получить равные результаты из двух запросов, которые должны доставить тот же результат. Но они этого не делают.
запрос 1:
select from (traverse in(sung_by) from #9:8 while $depth<=1) where type='song' order by @rid
это означает: начать с данного узла, пройти через все «sung_by» входящих ребер не дальше, чем 1 узел прочь, выбрасывайте начиная вершину.
запрос 2:
select expand(in(sung_by)) from #9:8 order by @rid
это означает: начать с одной и той же данной вершины, расширить соответствующим образом для всех входящих '' sung_by краев.
Я полагаю, что эти запросы должны возвращать тот же результат ... но я получаю другое значение уже на 4-й записи. Кроме того, если попытаться вычислить общее количество возвращенных записей, то в первом случае это будет 148, а в последнем - 150.
Что я делаю неправильно? Заранее спасибо.
EDIT:
я нашел эту проблему, и это странно. это в кавычках «sung_by». если он присутствует, запрашивает
select * from (traverse in('sung_by') from #9:8) where type='song'
и
select expand(in('sung_by')) from #9:8
поставить точно такой же результат.
Я не понимаю, почему он работал без кавычек в первую очередь, а во-вторых, я не понимаю, какие записи были выбраны.