2015-11-03 2 views
2

выразить условия в шифре, я все еще использую следующий трюк:Noe4j Cypher - условные операторы

FOREACH(ignoreMe IN CASE WHEN //Put conditions here// THEN [1] ELSE [] END | 
//Put instruction here//) 

Я использую это довольно долгое время. Есть ли лучшее решение сейчас? Будет ли в следующей стабильной версии?

Редактировать: Я имею в виду случаи, когда шаблон MATCH/WHERE не может быть использован. Для Exemple: Create nodes and relations conditionally when loading nodes from csv in Neo4j

или https://stackoverflow.com/search?q=FOREACH%28ignoreMe+IN+CASE+WHEN

+0

Обычно я основываю условия на основании данных, находящихся на фактическом графике; например MATCH (a), где a.someCondition = 1 WITH a (сделать что-то еще) – FrobberOfBits

ответ

0

Я не знаю, насколько лучше вы бы рассмотреть, но еще один способ приблизиться к LOAD CSV будет делать:

LOAD CSV WITH HEADERS from "file:/testfile.csv" as row 
WHERE trim(row.b) = 'truck' 
MERGE (p:Truck {vehicleType: row.a})); 

LOAD CSV WITH HEADERS from "file:/testfile.csv" as row 
WHERE trim(row.b) = 'car' 
MERGE (p:Car {vehicleType: row.a})); 

Синтаксический CSV-файл не занимает много времени (по крайней мере, относительно запросов), поэтому он не должен быть слишком большим, чтобы сделать это дважды.

Другим вариантом является использование команды neo4j-import (http://neo4j.com/docs/stable/import-tool.html). Возможно, вам придется изменить файлы CSV, но он импортируется намного быстрее. Также это не будет работать для инкрементных обновлений вашей базы данных. neo4j-import создает новую базу данных с нуля каждый раз, когда вы ее запускаете (что является причиной того, почему это может быть так быстро)

+0

Спасибо за ваше время и ответ. Обратите внимание, что я не спрашиваю об импорте CSV, но конкретно о выражении условия в Cypher в тех немногих случаях, когда он становится сложным – Hugo

Смежные вопросы