Neo4J: Как установить свойство из строки в дату? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть следующие узлы с этими свойствами:

 MATCH (a:Person{name:'Raf', birthDay:'05/07/1992'}),
       (b:Person{name:'Mary', birthDay:'10/08/1991'}),
       (c:Person{name:'Luke', birthDay:'11/01/1995'})

Как я могу установить birthDay из формата String в формат Date?И как я могу заказать свои узлы с учетом дня рождения и иметь его ранг?

1 Ответ

0 голосов
/ 14 ноября 2018

Первая операция, которую нужно сделать, это разделить текст дня рождения на выделенные части:

RETURN split('05/07/1992', '/') AS parts

вернет массив

["05", "07", "1992"]

Вторая операция - создание датыobject:

WITH split('05/07/1992', '/') AS parts
RETURN date({day: parts[0], month: parts[1], year: parts[2]})

Проблема в том, что day, month and year ожидают целочисленные значения, а не строки:

WITH [x IN split('05/07/1992', '/') | toInteger(x)] AS parts
RETURN date({day: parts[0], month: parts[1], year: parts[2]})

╒════════════════════════════════════════════════════════╕
│"date({day: parts[0], month: parts[1], year: parts[2]})"│
╞════════════════════════════════════════════════════════╡
│"1992-07-05"                                            │
└────────────────────────────────────────────────────────┘

Теперь по второму вопросу, как упорядочить узлы по дню рождения и получить ихrank?

Ну, вместо этого вы можете упорядочить по метке времени, однако, как вы можете видеть в этой документации о типе даты, на нем нет epochMillis, поэтому вы можете вместо этого использовать datetime.

Полный поток:

// Create Persons
CREATE (a:Person{name:'Raf', birthDay:'05/07/1992'}),
       (b:Person{name:'Mary', birthDay:'10/08/1991'}),
       (c:Person{name:'Luke', birthDay:'11/01/1995'})

// Set datetime as dob property

MATCH (p:Person)
WITH p, [x IN split(p.birthDay, "/") | toInteger(x)] AS parts
SET p.dob = datetime({day: parts[0], month: parts[1], year: parts[2]})

// Return younger persons

MATCH (p:Person) RETURN p ORDER BY p.dob.epochMillis DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...