让我们说我正在建立一个购物网站,我需要管理一个购物车。 在一个关系数据库中存储我的购物车以及项目和数量,我有类似的东西:
+-------------+ +-------------+ +-------------+
| Item | | ItemLine | | Cart |
+-------------+ +-------------+ +-------------+
| id | | id | | id |
| name |--------| item_id |--------| user_id |
| price | 1 * | cart_id | * 1 | price |
| | | quantity | | |
+-------------+ +-------------+ +-------------+
现在我没有关系数据库,而是使用MongoDB,我无法找到一个好方法。
有没有"对"在MongoDB中实现它的方法?
是否可以将数量与参考列表中的参考一起保存?如果是的话,它会是一个很好的实现方式吗?
答案 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 : "..."
}
注意:
itemLine
是嵌入式文档,只包含两个字段,因为它是一级数组,所以可以轻松更新。
根据cart_id,大部分数量可以使用$ inc递增。表现会很好。
Mongodb(没有加入),所以尽量避免很多关系。