从记录列表中创建节点时,如何传递datetime属性?

时间:2018-05-26 17:43:25

标签: neo4j cypher

我正在评估Neo4j和Cypher用于生产软件,我是从SQL服务器迁移数据,但为此我没有使用LOADCSV cypher命令,因为我需要更多的控制权在创建的节点和关系上。 我现在所做的事情与此相似:

{   "道具" :[{     "名称" :" Andres",     "位置" :"开发人员",     " date":" 2018-01-01"   },{     "名称" :" Michael",     "位置" :"开发人员"   }] }

UNWIND $支持AS地图 创建(n:人) SET n =地图

我想要实现的是将date属性设置为正确的数据类型(datetime)。有没有办法告诉cypher将该字段解析为日期时间?

注意:我已经尝试过" SET n.Date = datetime(map.date)"方法,但这也将属性Date添加到我不需要的第二个记录。

顺便说一句,我真的很喜欢和Neo4j一起工作;)

1 个答案:

答案 0 :(得分:0)

您可以使用以下事实:如果赋值为NULL,则不会创建或删除该属性:

WITH [ { name: "Andres",  position: "Developer", date: "2018-01-01" }, 
       { name: "Michael", position: "Developer" } ] AS props
UNWIND props AS map CREATE (n:Person) 
SET n = map, 
    n.date = CASE WHEN n.date IS NULL THEN NULL ELSE datetime(n.date) END
RETURN n