如何通过Pyorient OGM创建嵌入字段

时间:2019-04-24 16:12:39

标签: mongodb orientdb pyorient

我正在考虑从MongoDB迁移到OrientDB,因为我的数据是图形,但是我确实需要MongoDB文档的功能,尤其是嵌入式文档。

我能够在OrientDB的Web客户端中定义该方案,但是当您的模型很复杂并且无法将来重复使用时,它太慢了。因此,我想使用pyorient.ogm定义架构。

但是,pyorient或OrientDB的文档非常糟糕。它没有提供任何文档或通过pyorient定义嵌入的示例。

例如,我通过pyorient.ogm具有以下架构定义。

class Entity(Node):
    class Contact(object):
        name = String(nullable=False)
        phone = String(default='')
        email = String(default='')
        website = String(default='')
        meet = String(default='')

    name = String(nullable=False, indexed=True)
    abstract = String(nullable=False)
    nick = String(default='', indexed=True)
    logo = String(default='')
    type = Integer(mandatory=True, indexed=True)
    tag = EmbeddedList(default=[], linked_to=String(), indexed=True)
    introduction = String(default='')
    reference = String(default='', indexed=True)
    contact = EmbeddedMap(linked_to=Contact())

def init_database(name):
    graph = Graph(Config.from_url('plocal://us.zhqiang.org:2424/{}'.format(name), 'root', 'Button.2018'))
    graph.drop()
    graph = Graph(Config.from_url('plocal://us.zhqiang.org:2424/{}'.format(name), 'root', 'Button.2018'))
    graph.clear_registry()
    graph.create_all(Node.registry)
    graph.create_all(Relationship.registry)

if __name__ == '__main__':
    init_database('data')

此代码成功运行,但是在检查Web客户端中的架构后,我发现它不能很好地处理embedded

预期: -应该为Contact创建一个通用类 -tag应该与EMBEDDEDLIST一起显示为link_type=String。 -contact应与EMBEDDEDLIST一起显示为link_class=Contact

实际结果: -没有为Contact创建泛型类 -tag显示为EMBEDDEDLIST,但link_type为空。 -contact显示为EMBEDDEDLIST,但link_class为空。

0 个答案:

没有答案