2014-11-17 2 views
1

У меня есть некоторые узлы в моем графике neo4j, которые представляют собой комбинацию нескольких объектов. На этих узлах у меня есть свойство с именем «p_value», которое имеет тип double [].Как добавить бесконечность, NaN или нулевые значения в свойство double [] на узле в Cypher/Neo4j

Я объединяю новые сущности в существующие узлы и с помощью команды my merge, которую я использую для сопоставления, чтобы нажимать новые p_values ​​на конец этого массива double []. Проблемы в том, что для некоторых моих сущностей у меня нет p_values, поэтому мне нужно нажать что-то вроде -infinity/infinity, NaN или NULL в мой двойной массив [] p_value.

Вот пример запроса cypher, который я пробовал.

MERGE (process:GOTERM { name: "immune system process", go_id: 50896}) 
ON CREATE SET process.som = ["som_mouse_3_2"], process.p_value = [NULL] 
ON MATCH SET process.som = process.som + "som_mouse_3_2", process.p_value = process.p_value + NULL; 

Проблема здесь в том, что если у меня есть существующий узел с этим «именем» и «go_id» p_value свойство будет удалено, когда я пытаюсь добавить значение NULL для существующего массива p_values.

ответ

2

Действительно ли вы хотите иметь нулевое значение в массиве или было бы лучше просто не касаться его в нулевом случае?

Как насчет чего-то подобного, когда вы задаете только p_value, если newPValue не равно нулю?

WITH null AS newPValue 
MERGE (process:GOTERM { name: "immune system process", go_id: 50896}) 
ON CREATE SET process.som = ["som_mouse_3_2"], process.p_value = [] 
ON MATCH SET process.som = process.som + "som_mouse_3_2", 
      process.p_value = CASE WHEN newPValue is null THEN process.p_value ELSE process.p_value + newPValue END 
RETURN process 
+0

Я действительно хотел получить нулевое значение внутри массива. Однако для моих целей я могу просто положить -1 в массив, чтобы обозначить недостающее значение, так как p-values> = 0. Я оставлю этот вопрос открытым некоторое время, чтобы просто подождать еще пару ответов. – AFK

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