除了用於定義視圖的少量元數據之外,它們本身並不消耗任何內存。
當您執行上一個視圖的查詢,將取回相關的收集數據,並這反過來可能需要存儲引擎帶來更多的數據放入內存,如果有問題的數據只是在磁盤上,直到然後。
// Example view creation
db.runCommand ({
create: "managementFeedback",
viewOn: "survey",
pipeline: [ { $project: { "management": "$feedback.management", department: 1 } } ]
})
// ---------
db.managementFeedback.find() //Will bring a certain amount of document data into memory, if it wasn't already there.
db.survey.aggregate([ { $project: { "management": "$feedback.management", department: 1 } } ]) //Will bring exactly the same document data into memory
但是,這一切都是預期的。使用該視圖不會比使用相同管道運行聚合命令更耗費內存。
非常感謝!所以我應該只考慮一個由兩個或更多集合組成的視圖,它意味着MongoDB上的兩個或多個查詢。有關視圖的最重要的事情,使用索引查找外部字段在其自己的集合和查詢計數,視圖執行。我對嗎?你有什麼想法? – efkan
只有使用$ lookup操作的聚合才能完成源兩個集合的視圖 - mongodb不支持經典連接 - 但是,這意味着要讀取兩個集合。是的,你是對的,至關重要的是不要忘記在外國收藏中索引外國領域 - 錯過這一點,而且你每次都會對外國收藏進行全面的收藏掃描。 –