Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB默认为严格模式_Mongodb - Fatal编程技术网

MongoDB默认为严格模式

MongoDB默认为严格模式,mongodb,Mongodb,我们有一个nodejs+mongodb应用程序,已经在生产中运行了几年,并且正在多台机器上开发。在一个开发人员的机器上,我看到了错误 MongoError: collection already exists 研究此错误表明,仅当集合处于严格模式时,在尝试创建现有集合时才会发生此错误。我们不会在应用程序中的任何地方调用mongo的strict模式,我们只能在一台机器上重现此错误 导致此错误的代码如下所示: var mongo = require('mongodb'); mongo.MongoC

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

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

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

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.
  });
});

您可以从上面编辑的

中了解更多信息。正如我提到的,这段代码已经在登台和生产环境中运行了两年,许多开发人员都能够运行这段代码。似乎只有一台机器有这个问题。如果我们手动绕过此集合的错误,我们会在这台计算机上的所有其他集合中看到相同的错误,这使我相信安装的mongo版本本身有一个配置值,而不是我们的代码有问题。该开发人员是否碰巧也安装了mongoose?@JohnnyHK是一个旧版本。1.2.14@Jaco不确定,让我再检查一下。mongoose会干扰吗?与Node.JS Mongo驱动程序不同,新版本的mongoose默认执行
strict:true
,因此确实想知道mongoose安装是否会干扰mongodb核心库;我不愿意更改在生产环境中运行的稳定代码,以修复只在一个开发人员的机器上发生的问题。这个问题是关于在一台机器上查找导致错误行为的配置,而不是中断所有其他工作配置