为了更快地插入和搜索,我应该在mongodb中创建一个或多个集合吗?

为了更快地插入和搜索,我应该在mongodb中创建一个或多个集合吗?,mongodb,Mongodb,我对mongodb相当陌生。我正在创建一个web应用程序,它允许插入和搜索多种产品,如笔记本电脑、硬盘驱动器、网络摄像头。。。我的问题是,我应该将所有产品放在同一个集合中,如“计算机”,还是将每个产品放在它们自己的集合中,如“笔记本电脑”、“硬盘驱动程序”、“网络摄像头”,这样当用户搜索和插入某个产品时,它会更快 非常感谢一般来说,对于存储的每种“类型”,您应该使用一个集合。听起来您上面给出的所有示例都属于一个产品“类型”,应该在同一个集合中。同一集合中的文档不一定都有相同的字段,尽管对于产品,

我对mongodb相当陌生。我正在创建一个web应用程序,它允许插入和搜索多种产品,如笔记本电脑、硬盘驱动器、网络摄像头。。。我的问题是,我应该将所有产品放在同一个集合中,如“计算机”,还是将每个产品放在它们自己的集合中,如“笔记本电脑”、“硬盘驱动程序”、“网络摄像头”,这样当用户搜索和插入某个产品时,它会更快


非常感谢

一般来说,对于存储的每种“类型”,您应该使用一个集合。听起来您上面给出的所有示例都属于一个产品“类型”,应该在同一个集合中。同一集合中的文档不一定都有相同的字段,尽管对于产品,所有文档中可能有几个共同的字段:名称、价格、制造商等;每个文档“子类型”可能有几个共同的字段,比如硬盘驱动器可能都有RPM、存储容量、形状系数、接口(SATA2/3、IDE等)

此建议的基本原理是MongoDB查询一次只在一个集合上执行。如果您想显示涵盖不同类别产品的搜索结果,那么只需一个集合就可以了,但多个集合就更难了(性能也更低)

就查询性能而言,请确保在搜索的字段上创建索引。如果您允许按产品名称或制造商进行搜索,则会有一个名称索引,另一个制造商索引。根据文档中的字段,您的确切索引会有所不同

另一方面,索引越少,插入速度就越快(因为每次保存或更新文档时,每个索引都可能需要更新),因此不要创建比实际需要更多的索引


有关这些主题的更多信息,请参阅和上的MongoDB文档,以及来自10gen扬声器和MongoDB用户的文档。

我建议从一个集合开始。搜索一个集合比搜索每个产品的集合要简单得多。将来,如果您对集合的查询变慢,您可以开始考虑如何加快它们

Mongodb的速度相当快,而且它的设计是为了可扩展的,所以一旦您需要扩展您的数据库,就需要在适当的位置进行扩展