MongoDB默认为严格模式



我们有一个nodejs + mongodb应用程序,该应用程序已经在生产环境中运行了好几年,并在多台机器上开发。仅在一个开发人员的计算机上,我看到了错误

MongoError: collection already exists

研究此错误表明,仅当集合处于严格模式时,才尝试创建现有集合时会发生这种情况。我们不会在应用程序的任何地方调用 mongo 的严格模式,我们只能在一台机器上重现此错误。

导致此错误的代码如下所示:

var mongo = require('mongodb');
mongo.MongoClient.connect(config.mongoConnectionString, {w:1}, function(err, db) {
  db.createCollection('accounts', function(err, collection) {
    // "err" here is the error message.
  });
});

有没有办法覆盖 mongo 的默认strict: false值?是否有导致打开严格模式的全局配置选项?我宁愿不修改代码以为每个集合指定strict: false,只是为了启用单个开发人员。开发人员正在运行 mongo v3.2

您可以使用此功能禁用"严格"模式

var mongo = require('mongodb');
mongo.MongoClient.connect(config.mongoConnectionString, {w:1}, function(err, db) {
  db.createCollection('accounts', {strict:false}, function(err, collection) {
    // "err" here is the error message.
  });
});

你可以从这里阅读更多关于这个

最新更新