有许多额外的领域

时间:2015-06-25 09:46:47

标签: mongodb database

让我们说我正在建立一个购物网站,我需要管理一个购物车。 在一个关系数据库中存储我的购物车以及项目和数量,我有类似的东西:

+-------------+        +-------------+        +-------------+ 
|   Item      |        |   ItemLine  |        |    Cart     |
+-------------+        +-------------+        +-------------+ 
| id          |        | id          |        | id          |
| name        |--------| item_id     |--------| user_id     |
| price       | 1    * | cart_id     | *    1 | price       |
|             |        | quantity    |        |             |
+-------------+        +-------------+        +-------------+ 

现在我没有关系数据库,而是使用MongoDB,我无法找到一个好方法。

有没有"对"在MongoDB中实现它的方法?

是否可以将数量与参考列表中的参考一起保存?如果是的话,它会是一个很好的实现方式吗?

2 个答案:

答案 0 :(得分:1)

字段可以是array的类型。我会考虑像

这样的东西
module.exports = new Schema({
    id: Number, //product id
    name: String,
    image: String, 
    ...etc etc
}, { collection: 'Products' });

var PurchasedItem = new Schema({
    id: Number, //id of product
    quantity: Number
});

module.exports = new Schema({
    id: Number, //cart id
    items: [PurchasedItem] 
}, { collection: 'Cart' });

答案 1 :(得分:1)

在mongodb设计中,以下内容将更适合您的场景

物品

    {
      _id :"...",
      name : "...",
      price : "....",
      itemLine : [{
                    cart_id : "...",
                    quantity : 10

                   },

                   {
                     cart_id : "...",
                     quantity : "...."

                  }]
    }

  {
    _id : "..",
    user_id : "...",
    price : "..."

   }

注意:

  1. itemLine是嵌入式文档,只包含两个字段,因为它是一级数组,所以可以轻松更新。

  2. 根据cart_id,大部分数量可以使用$ inc递增。表现会很好。

  3. Mongodb(没有加入),所以尽量避免很多关系。