У вас сложный запрос CYPHER о сборе с использованием неоистического Голанга?
Я создаю социальную сеть, когда в комментарии включаются упоминания (например, Facebook), я отправляю комментарий json в веб-сервис:
{
"owner": 5, // id of user write comment
"message": "text",
"mentions":[
{
"id": 1, // user id
"name": "mention", // name is shown
"offset": 0, // position of start of mention text
"length": 10 // length of mention text
},
{
"id": 2, // user id
"name": "mention", // name is shown
"offset": 0, // position of start of mention text
"length": 10 // length of mention text
}
],
}
МОДЕЛЬ ДАННЫХ: (Пользователь)-[ЗАПИСЬ]->(Комментарий {сообщение})-[MENTION{имя, смещение, длина}]->(Пользователь)
В исходном коде я использую код ниже, чтобы вернуть res с идентификатором комментария
cq := neoism.CypherQuery{
Statement: stmt,
Parameters: params,
Result: &res,
}
Моя проблема в том, что я не знаю, как написать запрос для этого. Слишком сложно для меня.
1 ответ
Решение
Вот как сделать Cypher, не разбивая JSON в первую очередь.
WITH {json} AS map
MATCH (u:User)
WHERE id(u)=map.owner
CREATE (u)-[:WRITE]->(c:Comment{message:map.message})
FOREACH (mention IN map.mentions |
MATCH (u2:User) WHERE id(u2) = mention.id
CREATE (c)-[:MENTION{name:mention.name, length:mention.length, offset:mention.offset}]->(u2))
RETURN id(c) AS id