2011-11-02 52 views
4

選項1:MongoDB的:通過套疊的鍵查找VS頂級鍵

{ 
    _id: ObjectId, 
    text: String, 
    author: { 
    id: ObjectId, 
    name: String, 
    email: String 
    } 
} 

選項2:

{ 
    _id: ObjectId, 
    text: String, 
    authorId: Id, 
    author: { 
    name: String, 
    email: String 
    } 
} 

我有類似上面的選項1後文件的模式。有一個單獨的'作者'集合,上面的作者ID字段引用。 '姓名'和'電子郵件'在這裏被複制;作者集合中有更多的作者信息。

我對Post集合的一個查詢將查詢某個作者ID的所有帖子。

在性能方面,使用選項2最好,因爲作者ID鍵位於文檔的「頂層」?如果使用選項1中的嵌套鍵搜索文檔,是否有區別?

回答

3

不,它不會產生顯着的性能差異。 MongoDb可以很好地索引'頂級'鍵或'嵌套鍵'。 MongoDb可以在內部讀取完整的BSON對象,因此可以有效地到達其任何部分。 請閱讀此處: http://www.mongodb.org/display/DOCS/BSON

您可以嘗試創建2個測試集合,並在查詢的字段上創建索引。 表現將是相同的。