集合就是一组文档,如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表。
集合是无模式的。这意味着一个集合里面的文档可以是各式各样的。
一个集合中不光可以是值的类型不同,键也可以完全不一样。因为集合里面可以放置任何文档。
则一个问题是:还有必要使用多个集合吗? good question!
理由是
- 把各种各样的文档都混在一个集合里面,无论对于开发者还是管理者来说都是噩梦。
- 在一个集合里面查询特定类型的文档在速度上也很不划算,分开做多个集合要快德多。
- 把同种类型的文档放在一个集合里,这样数据就会更加集中。
- 当创建索引的时候,文档会有附加的结构(尤其是有唯一索引的时候)。索引是按照集合来定义的。
- 把同种类型的文档放入同一个集合里面,可以使索引更加有效。
子集合
组织集合一种惯例是使用"."字符分开的按命名空间划分的子集合。
很多MongoDB工具中都包含子集合。
在MongoDB中使用子集合来组织数据是很好的方法。