2013-08-14 2 views
1

У меня есть большая база данных neo4j, которая включает в себя различную числовую информацию, которую я хотел бы выполнять вычислениями (например, суммой, средним и т. Д.). К сожалению, я не понял, что Cypher не разрешает литье типов и сохраняет числовые свойства в виде строк. Есть ли способ, которым я могу выполнять вычисления по этим свойствам? Либо кастинг/преобразование «на лету», либо какой-то способ перестройки всей базы данных, чтобы преобразовать все эти свойства в целые числа.Изменить тип данных свойства в базе данных neo4j

Большое спасибо, BSG

UPDATE Я решил проблему, написав простую программу Java, чтобы перебирать мои индексы, найти нужные свойства, и повторно сохранить их в качестве Целые. Однако, поскольку ответ Джатина ниже определенно правильный (и, возможно, лучшее решение, я просто хотел использовать Cypher), я буду принимать его в качестве ответа. Большое спасибо!

+0

Фактически cypher хранит числовые значения в виде числовых значений. Как вы их добавили? –

+0

Я создал график, используя привязки Java, и запрашиваю его с помощью cypher. Я преобразовал целые числа в строки в Java, прежде чем хранить их - база данных не знает, какими они были. – bsg

ответ

0

Простой. Вместо этого используйте Java API.

for(Relationship r: node.getRelationships()){ 
    Integer p = (Integer) r.getProperty("value"); 
} 

Это при условии, что Relationship содержит свойство с Integer как собственность. Если нет, то получите строку и сделайте Integer.parseInt на Строке.

Это самый простой способ сделать это. В общем, я предпочитаю Java api над cypher. Лучшая производительность и больший контроль

+0

Я думал об этом, но, как и простота и интерактивность Cypher. Есть ли простой способ изменить тип данных всех таких свойств в базе данных после их создания? Или какие-либо инструменты для написания и запуска регулярных запросов API, например, для Cypher? – bsg

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