Arrays 在Neo4j中的对象中存储序列化数据

Arrays 在Neo4j中的对象中存储序列化数据,arrays,serialization,neo4j,Arrays,Serialization,Neo4j,我刚刚将Rails应用程序从MySql迁移到Neo4j。我一直在数据库中以序列化字符串的形式存储用户网站列表(例如user.websites=“www.facebook.com”、“www.twitter.com”等) 当我尝试创建或更新该属性时,会出现以下错误: 运行时错误(不允许使用值存储数组 在Neo4j中存储阵列或序列化数据的最佳方式是什么?这在很大程度上取决于您以后要如何处理这些数据。这些网站对您的数据模型有意义吗?还是只是日志记录 在案例1中,如果是您的模型中有意义的类型,那么我的建

我刚刚将Rails应用程序从MySql迁移到Neo4j。我一直在数据库中以序列化字符串的形式存储用户网站列表(例如user.websites=“www.facebook.com”、“www.twitter.com”等)

当我尝试创建或更新该属性时,会出现以下错误:

运行时错误(不允许使用值存储数组


在Neo4j中存储阵列或序列化数据的最佳方式是什么?

这在很大程度上取决于您以后要如何处理这些数据。这些网站对您的数据模型有意义吗?还是只是日志记录

在案例1中,如果是您的模型中有意义的类型,那么我的建议是使用类似于此用户--[related_to]-->的网站(url:string)

在案例2中,它们可以只是用户节点内的字符串数组。如中所示,您可以将下一组类型存储为属性:

  • 布尔或布尔[]
  • 字节或字节[]
  • 短的或短的
  • int或int[]
  • 长的或长的
  • 浮动或浮动[]
  • 双人或双人
  • char或char[]
  • java.lang.String或String[]

    • 普邦

除了上面的讨论,下面是一个序列化()的示例方法

neo4jhelpers.rb
模块Neo4j
模数转换器
类序列化转换器
#连载刺痛

类这是案例#2。在Neo4j中是否有任何方法可以轻松地将字符串序列化/反序列化到数组?ActiveRecord有一个“serialize”方法来实现这个非常相同的函数…不完全一样。您可以看看neo4j gem是否提供了更类似于ActiveRecord的功能。但不确定。您好,我通常更喜欢案例1,因为它给了您更多的灵活性。请注意,您可以将项另存为列表(has_list)如果项的顺序相关。如果要存储基元值数组(字符串、int、字节等),Neo4j.rb支持案例2。请确保数组中的所有项都是相同的类型。如果要将对象序列化为基元,或映射值对象(如ActiveRecord),请选中此项
module Neo4j
  module TypeConverters
    class SerializeConverter
      # serializes to sting
      class << self

        def convert?(type)
          type == :serialize
        end

        def to_java(value)
          return nil unless value
          JSON.generate(value).to_s
        end

        def to_ruby(value)
          return nil unless value
          JSON.parse(value.to_s)
        end
      end

    end
  end
end

Neo4j::TypeConverters.converters = nil # reload converters