Я пытаюсь выяснить правильный способ подключения вновь созданных узлов к дополнительным узлам, которые могут или не могут существовать. В принципе, CREATE A и если существует B, LINK B до A и RETURN A. Если B не существует только RETURN A.Связывание дополнительных узлов с запросом Cypher в Neo4j 2.0
Это мой запрос Cypher (дополнительные предложения WITH - это потому, что это часть более крупного запроса и я стараюсь, чтобы убедиться в этом примере код работает точно так же):
CREATE (a:A { foo: "bar" })
WITH a
OPTIONAL MATCH (b:B)
WHERE a.foo = b.foo
CREATE UNIQUE b-[:LINK]->a
WITH a
RETURN a
Это не работает, так как CREATE UNIQUE не удается, так как Ь NULL. Кроме того, чтобы разбить его на несколько запросов, есть ли способ сделать это?
работает как шарм. Пытался использовать FOREACH, но он жаловался, что NULL не подходит. Мне не приходило в голову, что сборщик (NULL) сделает трюк. – Bill
Возможно, вы также можете использовать '[b] как bs', если у вас есть много значений, совпадающих в необязательном совпадении, которые могут быть менее нетерпеливыми/более ленивыми. –
Итак, если b - это коллекция, и я делаю [b], она не становится коллекцией коллекций? – Bill