除了用于定义视图的少量元数据之外,它们本身并不消耗任何内存。
当您执行上一个视图的查询,将取回相关的收集数据,并这反过来可能需要存储引擎带来更多的数据放入内存,如果有问题的数据只是在磁盘上,直到然后。
// 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不支持经典连接 - 但是,这意味着要读取两个集合。是的,你是对的,至关重要的是不要忘记在外国收藏中索引外国领域 - 错过这一点,而且你每次都会对外国收藏进行全面的收藏扫描。 –