为少数列表中的项目设计MongoDB模式

为少数列表中的项目设计MongoDB模式,mongodb,Mongodb,我是MongoDB的新手,我想为电子商务网站设计模式。 我只问一个例子,我希望它能帮助我的整个设计 要求: 项目至少包含名称和价格 购物车是用户选择的项目列表 愿望列表是用户选择的项目列表 如果管理员编辑一个项目,它应该会影响购物车和愿望清单 我考虑了一些选择: 购物车和愿望列表中的项目id数组 带有嵌入式项目的购物车和带有嵌入式项目的愿望列表 利与弊是什么? 还有其他的设计方法吗 任何例子都会有帮助,谢谢 //item { _id : Number, name : Stri

我是MongoDB的新手,我想为电子商务网站设计模式。 我只问一个例子,我希望它能帮助我的整个设计

要求:

  • 项目至少包含名称和价格
  • 购物车是用户选择的项目列表
  • 愿望列表是用户选择的项目列表
  • 如果管理员编辑一个项目,它应该会影响购物车和愿望清单
我考虑了一些选择:

  • 购物车和愿望列表中的项目id数组
  • 带有嵌入式项目的购物车和带有嵌入式项目的愿望列表
  • 利与弊是什么? 还有其他的设计方法吗

    任何例子都会有帮助,谢谢

    //item
    {
        _id : Number,
        name : String,
        price : Number
    }
    //user
    {
        _id : Number,
        name : String,
        profile : {
            location : String,
            age : Number,
            created_at : Date,
            /*something something something*/
        },
        wishlist : {
            item_id : [Number] // store item's _ids
        }
    }
    
    我不认为使用数据库存储购物车数据是常见的方法。
    通常您可以使用session/get/post/cookie来代替

    因此,据我所知,您可能需要这样的东西:
    用户:{cart:[{itemID:someID,price:price}],愿望列表:[{itemID:someID}]
    -对于用户文档,项目文档将有它的项目集合。然后将项目引用存储在用户文档中。@tymeJV在这种情况下,当项目价格更改时会发生什么?如果项目价格更改,则在项目文档中更改,用户文档将只存储引用。我只包含
     price
    作为一个例子(显然是一个糟糕的例子),
    Maker
    可能是一个更好的选择。问题是,您存储了对其他文档的引用,例如:)