Каков наилучший способ попытаться создать пользователя, но не с соответствующей обратной связью, если имя пользователя уже занято?Neo4j 2.0 cypher обеспечивает уникальное имя пользователя (создать уникальный узел или сбой)
ответ
Небезопасный поток, но MERGE
- это правильный способ сделать это. Вы могли бы сделать что-то вроде этого, такого рода проверки на свойство, соответствующее чему-то, прежде чем вернуться. Этот вид зависит от того, что timestamp() возвращает одно и то же значение для всего запроса, который задокументирован: http://docs.neo4j.org/chunked/milestone/query-functions-scalar.html#functions-timestamp.
MERGE (u:User { username:"test" })
ON CREATE u
SET u.created = timestamp()
WITH u
WHERE u.created = timestamp()
RETURN u
Во второй раз, когда вы запускаете это, вы не получите никаких результатов.
Умный! Спасибо! –
У меня есть следующий вопрос: http://stackoverflow.com/questions/17729347/merge-query-set-map-and-created-property-upon-creation –
Просто добавление к ответу Уэса выше, если вы передадите собственную метку времени для слияния, вы можете избежать части Cypher WITH
.
MERGE (u:User { username:"test" })
ON CREATE u
SET u.created={myTimestamp}
RETURN u
Тогда просто проверить, если метка времени вы указали соответствует тот, который был возвращен (то есть. u.created
). Мне нужен был такой cypher, так как он всегда возвращает объект пользователя.
Есть ли выигрыш в производительности от этого, или это чисто для удобочитаемости? –
Насколько я знаю, добавление 'WITH' похоже на объединение нескольких шифров, но я сомневаюсь, что в этом случае есть какая-то реальная разница в производительности. Основная причина, по которой мне нравится этот метод, заключается в том, что мне нужно было вернуть пользователя, независимо от того, был ли он создан. –
- 1. создать уникальный узел или создать уникальный индекс
- 2. neo4j Cypher создать или обновить
- 3. Neo4j Уникальный маркированный узел
- 4. Neo4j/Cypher создать узел, если отсутствует
- 5. Neo4j REST API - создать уникальный узел
- 6. Neo4j 2,0 M4 - создать уникальный узел с этикеткой и свойствами
- 7. Как получить или создать уникальный дочерний узел в Neo4j
- 8. Neo4j Cypher Unique Constrain vs Indexing
- 9. Neo4j СОЗДАНО УНИКАЛЬНОЕ разъяснение
- 10. Neo4j Создать уникальный + Где в
- 11. Neo4j: матч Cypher, где узел имеет свойство ИЛИ имеет отношения
- 12. Не уникальное имя пользователя с идентификатором ASP.Net 2.0
- 13. Как создать уникальный узел из результата запроса в Cypher языке
- 14. Neo4j/Cypher concurrent MERGE
- 15. Neo4j Cypher: скопировать отношения и удалить узел
- 16. neo4j - создать другую аутентификацию пользователя
- 17. Создать или обновить уникальный подграф
- 18. Убедитесь, что уникальное имя пользователя
- 19. Neo4j Cypher Query включает начальный узел
- 20. neo4j/cypher - почему исходный узел исключен?
- 21. Neo4j Проверьте свойство cypher
- 22. Neo4j 2.0 - результат суммирования результатов запроса cypher
- 23. Neo4j 2.0 Cypher Query - CREATE в FOREACH
- 24. Neo4j создать узел
- 25. Sails.js Waterlock - уникальное имя пользователя
- 26. Как создать уникальные отношения neo4j 2.0
- 27. Neo4j, Cypher: Graphity System
- 28. Как создать уникальное имя пользователя с помощью TSQL?
- 29. Neo4J Создать узел десятичный
- 30. генерировать уникальное имя пользователя (omniauth + devise)
Казалось бы, команда [MERGE] (http://docs.neo4j.org/chunked/2.0.0-M03/query-merge.html) может быть решением, но я не могу понять способ напишите ответ, который даст мне знать, что ничего не произошло. –