感谢马蒂亚斯的正确答案。
我想补充一点,有时您拥有来自一个数据库的凭据,同时又想连接到另一个数据库。在这种情况下,您仍然可以使用 URL 方式连接,只需?authSource=
在 URL 中添加参数即可。
例如,假设您拥有来自 database 的管理员凭据admin
,并且想要连接到 database mydb
。您可以通过以下方式进行操作:
const MongoClient = require('mongodb').MongoClient;
(async() => {
const db = await MongoClient.connect('mongodb://adminUsername:adminPassword@localhost:27017/mydb?authSource=admin');
// now you can use db:
const collection = await db.collection('mycollection');
const records = await collection.find().toArray();
...
})();
此外,如果您的密码包含特殊字符,您仍然可以使用如下 URL 方式:
const dbUrl = `mongodb://adminUsername:${encodeURIComponent(adminPassword)}@localhost:27017/mydb?authSource=admin`;
const db = await MongoClient.connect(dbUrl);
注意:在早期版本中,用于用户名或密码时{ uri_decode_auth: true }
需要选项(作为connect
方法的第二个参数)encodeURIComponent
,但是现在此选项已过时,没有它也可以正常工作。