Я использую OrientDB 'match', чтобы получить путь (на графике) в соответствии с критериями, но я получаю путь к результату, который не существует.
У меня есть вершина "Person", котораяимеет ребро "PhoneCall" для другой вершины "Person" - только один путь должен совпадать!поэтому я ожидаю получить в результате: vertex1-edgeX-vertex2 Например - "Джонн Смит --phoneCallX-- Дэн Смит"
На самом деле я получаю 2 пути:
- vertex1-edgeX-vertex2 (Джонн Смит --phoneCallX-- Дэн Смит), но также:
- vertex1-edgeX-vertex 1 - это не так, поскольку это одно и то же ребро-@rid из первого результата, а также это НЕ самообладание: jonn Smith --phoneCallX-- jonn Smith
Запрос:
MATCH {class:person, as:E1, where:( ( firstName IN ['John'] ) )}.bothE(){class:phoneCall, as:R0}.bothV(){class:person, as:E0, where:( ( lastName IN ['Smith'] ) )} RETURN $paths
Я думаю, что это происходитиз-за метода «both ()» с того факта, что первая вершина применяется к обоим фильтрам:
- firstName IN ['John']
- Списокitem lastName IN ['Smith']
Но все же - я хотел найти все пути "John-phoneCall-Smith", и я получил грань (которой не существует) между этим Джоном исам только потому, что его зовут Смит (что должно быть условием ДРУГОЙ сущности этого отношения))
Пожалуйста, помогите мне - что я делаю неправильно?