MongoDb与外部数据库集成

时间:2017-06-30 20:55:16

标签: node.js mongodb express

我有一个数据库,其中包含来自两个独立系统/服务器的数据。第一个是本地生成的[我开发并创建此数据](用户,活动日志,订单......)。第二个来自“产品提供商”[我只能从API获取READ访问权限]这些对象由MySQL创建并以JSON格式发送。他们已经拥有“id”属性。

使用NodeJS,我使用请求按“id”获取产品,然后将其存储为newProduct.save()附加_id

在产品中,“id”必须与我的数据库中的其他集合(例如products_price)建立关系,并访问动态端点,例如“products /:id / promos”。

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

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

在某些时候,订单(本地)和产品(外部)需要形成一种关系,其中订单_id和产品ID(或_id)存储在一起以便于检索。

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

1 个答案:

答案 0 :(得分:1)

如果你非常确定' id'来自您的产品提供商API的唯一您最好将其用作_id(覆盖_id),它会为您节省:

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

(*)即使您发现自己与许多不同的产品提供商打交道,假设它使用自己独特的产品ID,您可以使用组合_id使其独特:

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

    多个提供商格式的用例中的

    取决于您计划以后如何获取这些产品。