MongoDB动态值

时间:2012-02-28 08:32:26

标签: mongodb mongodb-php nosql

所以,也许我已经理解了一些错误,因为我来自SQL世界:我有一个商品集合:

_id: "0234weasq43rq",
title: "Panasonic",
descr: "blah blah",
price: 132,
specifications {
   weight: 135,
   color: "black",
   type: "LCD",
   diagonal: 50
}

_id: "0234weasq43rq",
title: "Samsung Galaxy Tab",
descr: "blah blah",
price: 132,
specifications {
   weight: 135,
   color: "white",
   standard: "GSM",
   wifi: "Yes"
}

我可以针对不同类别的商品(例如手机和电脑)制定不同的规格吗?如果不是所有商品都有“对角线”规格,是否有使用goods.find(specifications { diagonal: 50 })等查询查找商品的问题?

谢谢!

2 个答案:

答案 0 :(得分:2)

是的,即使在同一个集合中,您的文档也可能具有完全不同的结构。在您的示例中,查询将仅返回对角线= 50的商品,并省略任何没有对角线定义的文档(或者已定义的文档但显然不是50)

答案 1 :(得分:1)

  

我可以为不同类别的商品保留不同的规格   (例如手机和电脑)?

相同的集合可以包含具有不同结构的文档。因此,对于您而言,您可以针对不同类别的商品保留不同的规格。

  

使用查询等查找商品是否有任何问题   goods.find(规格{diagonal:50}),如果不是所有商品都有   一个“对角线”规范?

不,绝对。可能对您有用的一件事是sparse索引用于未在所有文档中呈现的字段(例如,对角字段)。该索引不包括没有此字段的文档。