node.js - MongoDb 与外部数据库集成

标签 node.js mongodb express

我有一个数据库,其中包含来自两个独立系统/服务器的数据。第一个是在本地生成的[我开发并创建此数据](用户、事件日志、订单等)。第二个来自“产品提供商”[我只有 API 的读取权限]这些对象由 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?

最佳答案

如果您非常确定来自产品提供商 API 的“id”唯一,您最好将其用作 _id(覆盖 _id),这样可以节省您的时间:

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

(*) 即使您发现自己与许多不同的产品提供商打交道,假设其中一个使用自己唯一的产品 ID,您也可以使用组合的 _id 使其唯一,如下所示:

  • _id = {provider: 'foo', id: xxx}
  • 或 _id = [提供商名称、产品 ID]
  • 或 _id = 提供商名称 + 产品 ID 等等等等

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

关于node.js - MongoDb 与外部数据库集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44854701/

相关文章:

c# - 使用 C# 或 Linq 对 MongoDB 和 SQL 使用相同的语法

node.js - 这个 mongoose 部分更新有什么不正确的地方

node.js - Mongo 仅以 ISO_8601 格式存储日期,而不是 unix

javascript - 客户端如何输出数据? (express+mongodb+jade)

node.js - 如何使用 sequelize 执行此请求?

javascript - 使用 sails.js 确认密码

node.js - 向 API 发出获取请求时出现用户代理丢失错误

javascript - JavaScript 中数据类型的困惑

node.js - 无法在 Heroku 中查看 Express/React 应用程序(同时未找到)

node.js - 如何在 node.JS 项目上使用 Cassandra CLI?