MongoDb与外部数据库集成

我有一个数据库,其中包含来自两个独立系统/服务器的数据。 第一个是本地生成的[我开发和创build这个数据](用户,活动日志,订单,…)。 第二个来自“产品提供者”[我只有从API读取权限]这些对象是由MySQL创build的,并以JSON发送。 他们已经有一个“ID”属性。

使用NodeJS,我使用请求通过“id”获取产品,然后使用newProduct.save()存储它以附加一个_id

在产品中,“id”是与我的数据库中的其他集合(例如products_price)build立关系所必需的,并且访问诸如“products /:id / promos”之类的dynamic端点。

请注意,产品不断更新外部,我需要能够更新我的文件由“id”而不是“_id”,因为外部服务器不知道“_id”。 [id在集合级别上是唯一的,因为每个集合都是新的迭代]

对于我的第一个问题:我应该将“product.id”作为“常规”MongoDB字段,并使用聚合/查找来合并我的集合中的文档? 或者我应该用id来覆盖ObjectID()? (在保存重命名“id”为“_id”之前)

在某些情况下,订单(本地)和产品(外部)需要形成一个关系,Order _id和Product id(或_id)存储在一起以便于检索。

我在这种情况下使用哪个ID?

如果您确信您的产品提供程序API提供的“ID”是唯一的 ,则最好使用_id(覆盖_id),这样可以节省您:

  • 一个不需要的索引('_id'以任何方式索引)
  • mongoDB用来产生ObjectID的一些CPU周期
  • 一些磁盘和内存空间

(*),即使你发现自己处理许多不同的产品供应商,假设其中一个使用自己独特的产品id,你可以使用一个组合的_id来使其独特:

  • _id = {provider:'foo',id:xxx}
  • 或_id = [provider_name,product_id]
  • 或者_id = provider_name + product_id等等

    在这种多个提供商格式的用例中,取决于您计划在以后如何获取这些产品。