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等等
在这种多个提供商格式的用例中,取决于您计划在以后如何获取这些产品。
- 为什么我的ejs没有redirect?
- 如何将Mongoose / MongoDB包含在Express.JS应用程序中(ES2015方式)
- Node JS – Express – Mongo DB:在JSON密钥中使用额外的方括号发布数据
- 在Heroku上快速应用程序崩溃的Node.js,在本地工作
- 在使用express-socket.io-session时,不推荐使用express-session选项,为什么会出现这种情况?
- Express.JS:我怎样才能通过名字而不是数字设置回复状态?
- 在玉器链接的CSS文件不加载
- 如何从Node.js中的路由查询string获取数据与Ajax?
- app.get起作用,app.use不起作用