【问题标题】:Mongo array limitMongo数组限制
【发布时间】:2013-10-02 19:54:57
【问题描述】:

我正在尝试使用本机节点库在 Mongo 中插入一个对象。我有一个对象,它有一个包含 1620 个对象的数组属性。在文档中它说 mongo 支持嵌套多达 100 个级别,我没有遇到。数组中的对象只是对象,它们没有任何数组。包含所有项目的总文档大小仅为 456Kb。如果我将数组限制为 788 个对象,它们确实会保存在数据库中,但它会使应用程序崩溃。我是否遇到了节点的本机 mongo 库的问题?缺少数据库设置?

var droplist = convertOptionList(data);

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
  if(err) {console.log('error'); throw err;}

  var collection = db.collection('droplist');

  collection.insert(droplist, function(err, objects) {
    if(err) {
      console.log('error');
      throw err;
    }
    //never see this message. app crashes but with fewer items the query passes
    console.log("A-Ok");
  });
  db.close();
});

更新

代码的工作版本。稍作改动,将 db.close() 移动到插入回调的内部,并防止在对象全部插入之前调用 db.close。

var droplist = convertOptionList(data);

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
  if(err) {console.log('error'); throw err;}

  var collection = db.collection('droplist');

  collection.insert(droplist, function(err, objects) {
    if(err) {
      console.log('error');
      throw err;
    }
    db.close();
  });
});

【问题讨论】:

  • 应该澄清一下。我正在与主管一起运行我的应用程序,我看到应用程序在执行查询时崩溃并重新启动,因此我实际上没有看到来自 Mongo 的错误消息。

标签: node.js mongodb


【解决方案1】:

菜鸟失误。我把我的 db.close() 放在我的回调之外,所以连接在查询可以运行/完成之前关闭。将我的 db.close() 移到回调中,现在一切正常。

【讨论】:

    猜你喜欢
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多