Я работаю с пользователями, назначенными конкретным такси. Каждый пользователь имеет назначение Grid (выключение), например.cypher из группы узлов, возвращающих узлы на некотором расстоянии
MATCH (g:Grid)<-[rp:DROP_OFF]-(u:User)-[:ASSIGNED]->(t:Taxi {name:'Taxi1813'})
RETURN g.name as gridName, rp.time as dropTime, u.name as userName
Это результат
gridName dropTime userName
Grid1347 04:44 User183
Grid1239 04:38 User177
Grid811 04:44 User198
Grid765 04:45 User197
Grid1184 04:41 User179
Grid333 04:45 User186
Я хотел бы вернуть пользователей, которые находятся близко друг к другу (друг друга) и в течение определенного времени.
Для этого мне нужно выяснить, меньше ли времени между каждой сеткой, чем n значение. Отношение каждой сетки равно, например,
(:Grid)-[:TO {time:3}]-(:Grid)
Таким образом, из группы возвращенных сетках, я хочу, чтобы проверить, какие из них близки друг к другу
является Grid1347 близко к G1239 ?, является G1347 близко к G811? ... есть G1239 близко к G1347? ... etc..etc
Если я запустил этот запрос, чтобы получить пользователей и сетки в диапазоне [: TO * 1..2], которые назначены конкретным : Такси
MATCH
(t:Taxi {name:'Taxi1813'})<-[:ASSIGNED]-(u2:User)-[:DROP_OFF]->
(g2:Grid)-[:TO*1..2]-(g:Grid)<-[rp:DROP_OFF]-(u:User)-[:ASSIGNED]->
(t:Taxi {name:'Taxi1813'})
RETURN u.name, g.name, u2.name, g2.name
Я получил эту
u.name g.name u2.name g2.name
User183 Grid1347 User177 Grid1239
User177 Grid1239 User183 Grid1347
User177 Grid1239 User179 Grid1184
User177 Grid1239 User179 Grid1184
User179 Grid1184 User177 Grid1239
User179 Grid1184 User177 Grid1239
Но я думаю, не является оптимальным, так как я получил повторенное значение (Сетки и пользователей)
С предыдущего запросом моей первой мыслью была такой запросом, но я Жду» t получить какой-либо результат
MATCH
(t:Taxi {name:'Taxi1813'})<-[:ASSIGNED]-(u2:User)-[:DROP_OFF]->
(g2:Grid)-[:TO*1..2]-(g:Grid)<-[rp:DROP_OFF]-(u:User)-[:ASSIGNED]->
(t:Taxi {name:'Taxi1813'})
WITH g2, g
MATCH p=shortestPath((g2)-[r:TO]-(g))
WITH p,
REDUCE(totalTime = 0, x IN RELATIONSHIPS(p) | totalTime + x.time) AS totalTime
RETURN totalTime
Любые предложения? Спасибо заранее
Спасибо @BrianUnderwood, я попробовал ваше предложение. Сначала с идентификатором состояния пользователя (u)
andreahg
и да, как только вы предложили мне добавить новые ярлыки, я действительно хотел бы, но проблема в том, что мы собираемся объединить два алгоритма, а другой ученик уже определил метки и разработал один алгоритм. Так что сейчас невозможно внести изменения: (потому что у нас нет времени.Благодарим вас за ваши предложения. Надеюсь, у нас больше не будет проблем с – andreahg
Для чего это стоит, узел может иметь несколько ярлыков. Таким образом, возможно, было бы возможно объединить два алгоритма. – cybersam