TL;DR:
连接后立即调用db.collection() 仅适用于低于 3.0 的驱动程序版本。
详情:
首先,您看到的官方示例来自1.4.9版本的MongoDB驱动程序,现在驱动程序版本为3.5.8,建议您查看最新的文档和示例here。
为了澄清混淆,连接 URI 中指定的数据库路径是身份验证数据库,即用于登录的数据库,即使对于 1.4.9 版本的驱动程序也是如此 - reference。
但是,您提到的差异的原因,即在某些情况下能够在连接后立即调用 db.collection() 是由于驱动程序版本 3 中 MongoClient 类的更改 - reference。
在版本 3 之前,MongoClient.connect 将向其回调函数返回一个 DB 实例,并且此实例将引用连接 URI 路径中指定的数据库,因此您可以立即调用 db.collection():
MongoClient.connect("<connection_URI>", function(err, db) {
// db is a DB instance, so I can access my collections straight away:
db.collection('sample_collection').find();
});
但是,在版本 3 中进行了更新,MongoClient.connect 现在返回 MongoClient 实例,而不是 DB 实例 - reference:
MongoClient.connect("<connection_URI>", function(err, client) {
// client is a MongoClient instance, you would have to call
// the Client.db() method to access your database
const db = client.db('sample_database');
// Now you can access your collections
db.collection('sample_collection').find();
});