【问题标题】:Best practice to store price changes over time in Mongodb在 Mongodb 中存储价格随时间变化的最佳实践
【发布时间】:2022-01-21 00:29:11
【问题描述】:

我使用NestjsMongoose 作为ODM。我有一个名为 Product 的模型,它具有以下属性:

产品型号

    @Schema({ timestamps: true, id:true, toJSON:{virtuals:true} })
    export class Product {
       @Prop({ required: true, type: String })
       title: string

       @Prop({ type: String })
       brand: string

       @Prop({ type: String })
       description: string


       @Prop({ type: Number})
       currentPrice: number

    }

每 4 小时更新一次产品价格。我想知道在MongoDB 中存储产品价格历史记录的最佳方式是什么。在像PostgreSQL 这样的 SQL 数据库中,我们使用 (productId, price, date) 创建一个 ProductPrice 表。但是MongoDB 的最大文档大小是 16MB,并且我拥有数千种产品&MongoDB 中的最佳解决方案是什么??

【问题讨论】:

  • 您是否尝试过您的 ProductPrice 架构?我没有预见到任何具体的困难。 16 MB 文档大小限制适用于单个文档(或相当于 RDBMS 中的一行),所以我猜您不太可能达到您提到的 3 字段模式的限制。

标签: database mongodb mongoose


【解决方案1】:

这对MongoDB 来说并不具有挑战性,请随意创建一个ProductHistory 集合:

{
  id: ObjectId,
  product_id: ObjectId,
  created_at: Date,
  price: 99,
  currency: "$",
  expiration: 4,
  expired: false
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多