Я подумываю о переходе с MongoDB на OrientDB, поскольку мои данные представляют собой график, но мне требуются функции документа из MongoDB, особенно встроенного документа.
Мне удалось определить схему в веб-клиенте OrientDB, однако она была слишком медленной, когда ваша модель сложна и не может быть повторно использована в будущем. Таким образом я хочу использовать 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')
Этот код выполняется успешно, но после изучения схемы в веб-клиенте я обнаружил, что он не очень хорошо обрабатывает embedded
.
Ожидаемое:
- Общий класс должен быть создан для Contact
- tag
должен быть показан как EMBEDDEDLIST
с link_type=String
.
- contact
должен быть показан как EMBEDDEDLIST
с link_class=Contact
.
Фактический результат:
- Не создан универсальный класс для Contact
- tag
отображается как EMBEDDEDLIST
, но link_type
пусто.
- contact
отображается как EMBEDDEDLIST
, но link_class
пусто.