例如:下面“一个对少数几个”的建模示例。最好的建模方法是在父文档(persopn)中嵌入几个(address):
> db.person.findOne() { name: 'Mark Kornfield', ssn: '1223-234-75554', addresses : [ { street: '123 Church St', city: 'Miami', cc: 'USA' }, { street: '123 Mary Av', city: 'Los Angeles', cc: 'USA' } ] }
在“一个对多个”示例中,我们将考虑设计两个集合,即产品products集合和零件parts集合。每个零件都有一个“ ObjectID”,该“ ObjectID”将出现在产品集合的引用中。这样的设计可以让读写性能更高效。
> db.parts.findOne() { _id : ObjectID('AAAA'), partno : '1224-dsdf-2215', name : 'bearing', price: 2.63 > db.products.findOne() { name : 'car', manufacturer : 'Ford', catalog_number: 2234, parts : [ // array of references to Part documents ObjectID('AAAA'), // reference to the bearing above ObjectID('F17C'), // reference to a different Part ObjectID('D2AA'), // etc ]
2.3.设计模式可视化
尽管MongoDB是schemaless“无模式的”,但仍然存在将集合collections可视化为图表的方法。能够查看设计图,将对您理解和设计MongoDB的方式上产生重大影响。
DbSchema是可以很好地完成可视化设计工作的一个工具。如下图所示,它将通过读取集合和文档来推导架构。此外,您只需单击就可以修改图中的对象。在DbSchema中,您还可以为MongoDB创建外键,当然仅在本地创建,只用于设计目的。
2.4.智能索引
为了保持数据库的良好性能,有必要建立智能索引,这将简化写入和读取操作。知道MongoDB的索引优势和局限性非常重要,MongoDB保留用于排序操作的内存限制为32MB。如果你不使用索引,则排序时数据库将被迫将所有排序文档hold在内存里面,如果达到32M的限制,则数据库将返回错误或空集。
结论
对MongoDB的透彻理解与对数据库想要实现的目标的清晰了解是良好数据库设计的秘诀。
总结
到此这篇关于MongoDB设计方法以及技巧的文章就介绍到这了,更多相关MongoDB设计方法及技巧内容请搜索