Мой последний вопрос был закрыт для дублирования Confused about MERGE sometimes creating duplicate relationship, однако мне не удалось найти решение, и это касается дублированных отношений, а не дубликатов узлов.Почему MERGE иногда создает дубликаты отношений?
У меня есть запрос, когда пользователь VISITED
профиль другого пользователя
MATCH (you:User {user_id: { myId }}), (youVisited:User {user_id: { id }})
MERGE (you)-[yvr:VISITED]->(youVisited)
SET yvr.seen = false, yvr.created_at = timestamp()
RETURN yvr.created_at as visited_at
я заметил, что в редких случаях, дубликат [:VISITED]
отношения происходит. Для (1057)-[:VISITED]->(630)
, оба имеют то же свойство, и там действительно только должны быть один [:VISITED]
независимо от того, что (в следующий раз, когда пользователь посещает, он должен просто MERGE
в [:VISITED]
и обновлять [:VISITED {created_at: ..., seen: false}]
между теми же пользователями узлами:
{
created_at: 1485800172734,
seen: false
}
Я думал, что точка MERGE
, чтобы предотвратить это? Очевидно, что нет, так почему это происходит и как я могу гарантировать этого не происходит?
Я посмотрел некоторые другие т но я не уверен, является ли информация надежной или актуальной. Например: http://neo4j.com/docs/developer-manual/current/cypher/clauses/create-unique/, я должен использовать CREATE UNIQUE
вместо этого? Я думал, что MERGE
был в значительной степени лучшей заменой для него.
Какая версия Neo4j вы используете, между прочим? Возникла проблема с [неправильной блокировкой MERGE] (https://github.com/neo4j/neo4j/pull/8629), зафиксированной в ветке 3.0, я пытаюсь проверить, попало ли это исправление в текущие выпуски, или если он все еще находится в стадии разработки. – InverseFalcon
Если он еще не исправлен в текущих ветвях, вам может потребоваться вручную заблокировать соответствующие узлы, прежде чем вы выполните MERGE. [Процедуры блокировки APOC] (https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_locking) могут помочь вам здесь. – InverseFalcon
Подтверждено от 2/10/2017, это исправление еще не является частью текущих выпусков. – InverseFalcon