Как сказал Питер, для проверки свойств вам нужно использовать предложение where. Шаблоны сопоставления предназначены для сопоставления шаблонов без проверки свойств. Однако вы можете использовать индексы, чтобы найти узлы, которые, например, начинаются с определенного диапазона времени.
Я построил пример для вас:
create
(_1 {city:"DC"}),
(_2 {city:"NY"}),
(_3 {city:"SF"}),
(_4 {city:"LA"}),
_1-[:flight {leave:1349431200, arrive:1349445600}]->_2,
_1-[:flight {leave:1349427600, arrive:1349442000}]->_2,
_1-[:flight {leave:1349424000, arrive:1349438400}]->_2,
_1-[:flight {leave:1349420400, arrive:1349434800}]->_2,
_1-[:flight {leave:1349416800, arrive:1349431200}]->_2,
_1-[:flight {leave:1349409600, arrive:1349424000}]->_2,
_2-[:flight {leave:1349431200, arrive:1349445600}]->_3,
_2-[:flight {leave:1349427600, arrive:1349442000}]->_3,
_2-[:flight {leave:1349424000, arrive:1349438400}]->_3,
_3-[:flight {leave:1349431200, arrive:1349445600}]->_4,
_3-[:flight {leave:1349427600, arrive:1349442000}]->_4,
_3-[:flight {leave:1349424000, arrive:1349438400}]->_4,
_3-[:flight {leave:1349438400, arrive:1349445600}]->_4,
_3-[:flight {leave:1349442000, arrive:1349449200}]->_4,
_3-[:flight {leave:1349445600, arrive:1349452800}]->_4;
Ради интереса вот запрос, который показывает все рейсы, соответствующие пунктам назначения (до фильтрации): http://console.neo4j.org/r/6ropic Чтобы поездка считалась действительной, везде должна быть отрицательная разница во времени.
Вот запрос с фильтрацией предложения where
:
start dc=node(1), la=node(4)
match trip=dc-[dcny]->ny-[nysf]->sf-[sfla]->la
where dcny.arrive < nysf.leave and nysf.arrive < sfla.leave
return dcny.arrive - nysf.leave, nysf.arrive - sfla.leave, dcny.arrive, nysf.leave, nysf.arrive, sfla.leave;
+-----------------------------------------------------------------------------------------------------------+
| dcny.arrive - nysf.leave | nysf.arrive - sfla.leave | dcny.arrive | nysf.leave | nysf.arrive | sfla.leave |
+-----------------------------------------------------------------------------------------------------------+
| -3600.0 | -3600.0 | 1349424000 | 1349427600 | 1349442000 | 1349445600 |
+-----------------------------------------------------------------------------------------------------------+
1 row
0 ms
http://console.neo4j.org/r/79qr9s
Это немного сложнее, если вы хотите попытаться сделать это с путями переменной длины, но для этого варианта использования, вероятно, не конец света, чтобы указать максимум несколько остановок.
Обновление:
Думал об этом еще немного - вы также можете выбрать группу отношений в своем предложении start
на основе индекса времени прибытия и ухода. Сильно ограничит ваши поиски.
person
Eve Freeman
schedule
06.10.2012