网站搜索

javascript - 在 MongoDB 的原生 NodeJS 驱动中,什么时候使用 MongoClient 构造函数,什么时候使用 Db 构造函数?


MongoClient 和 Db 构造函数在手册中有描述。你什么时候应该使用一个,什么时候应该使用另一个?

答案#1

通常应该优先使用 MongoClient,唯一的主要问题是它比较新(1.2 及以上版本)。

让我们引用手册:

MongoClient 或如何以一种新的更好的方式连接

从驱动版本 1.2 开始,我们引入了一个新的连接类,在我们所有官方驱动中都具有相同的名称。这是为了确保我们所有的 API 都呈现出一个可识别的界面。这并不意味着您的现有应用程序会出错,而是我们鼓励您使用新的连接 API 来简化应用程序开发。

此外,我们正在创建的新连接类 MongoClient 会确认对 MongoDB 的所有写入操作,这与现有的连接类 Db 不同,后者已关闭确认。

因此,两个最大的变化是 MongoClient 承认对数据库的所有写入,以及在连接中实际选择数据库的时间。

使用 MongoClient:

var MongoClient = require('mongodb').MongoClient
  , Server = require('mongodb').Server;

var mongoClient = new MongoClient(new Server('localhost', 27017));
mongoClient.open(function(err, mongoClient) {
  var db1 = mongoClient.db("mydb"); // The DB is set here

  mongoClient.close();
});

与 Db 对比:

// db is selected in the next line, unlike with MongoClient and most drivers to other databases
var db = new Db('test', new Server('locahost', 27017)); 
// Establish connection to db
db.open(function(err, db) {
  assert.equal(null, err);

  db.on('close', test.done.bind(test));
  db.close();
});