在MongoDB中,当我们访问db对象的集合时,如果集合未定义,它会隐式调用DB.prototype中定义的getCollection函数。
我无法弄清楚Mongo shell源中发生此调用的位置:https://github.com/mongodb/mongo/tree/master/src/mongo/shell
这是如何运作的?
答案 0 :(得分:1)
与MongoDB 3.4一样,mongo
shell与作为MongoDB服务器代码库一部分的脚本引擎API集成。通过覆盖getProperty
对象的db
方法来实现默认集合行为:src/mongo/scripting/mozjz/db.cpp。
我不相信在纯JavaScript中进行这种自动加载有相同的方法,因为唯一可用的默认JavaScript方法是类构造函数。