【问题标题】:FIWARE Orion: change entity typeFIWARE Orion:更改实体类型
【发布时间】:2019-05-18 20:16:35
【问题描述】:

在 Orion 中,是否可以更改实体的类型? 相关问题,可以改变属性的类型吗?

编辑:更改实体的类型似乎是不可能的。所以创建一个新实体似乎是一个解决方案。但是如何保存 dateCreated 和 dateModified 呢?

【问题讨论】:

    标签: fiware-orion


    【解决方案1】:

    在 Orion 中,是否可以更改实体的类型

    不直接。实体 id 和实体类型是不可变的。但是,您可以使用新类型创建实体的副本,然后删除旧实体。这将产生同样的效果。

    相关问题,可以改变属性的类型吗?

    是的,是的。更新属性时,不仅可以更改值,还可以更改类型(和元数据)。

    编辑dateModifieddateCreation 属性和元数据设计为由 Context Broker 自动管理。客户端不能修改它们,它们是“只读的”。这个想法是给定的上下文消费者客户端(原则上,它独立于创建/更新实体的上下文生产者客户端)具有任何人都无法更改的可信时间戳。

    所以,你基本上有两种选择:

    1. 使用您的自定义时间戳属性和元数据。当您创建新实体时,它们可以“移动”到新实体。但是,CB 不会自动维护它们,因此您的应用程序必须这样做。

    2. 使用 API 外进程,在 DB 级别移动实体。但是,这可能很复杂,因为您需要直接访问 DB。

    EDIT2:对于第二种情况(基于数据库的进程),请考虑Orion DB model。特别是:

    • _id.type 用于实体类型
    • creDate 代表实体创建日期
    • modDate是实体修改日期
    • attrs.A.creDate 用于属性 A 创建日期
    • attrs.A.modDate为属性A修改日期

    【讨论】:

    • 复制实体似乎是一个不错的解决方案。但是,此操作不会保留 dateCreated 和 dataModified。
    • 是的,API 外的过程似乎是最好的,因为我可以访问数据库。是否可以复制 orion DB,并在那里重命名类型?
    • 是的,应该是可以的,但它需要一些 MongoDB 的知识,超出了这个问题的范围。但是,我在答案中的 EDIT2 部分添加了一些提示,可能会在此过程中有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 2022-01-08
    相关资源
    最近更新 更多