大型更新上的Mongoose错误

时间:2015-04-15 22:32:57

标签: node.js mongodb mongoose

当我发现所有影响大量文档的查询出现重复出错时,我试图从Mongoose中的集合中删除所有文档。我有一个架构设置和功能设置如下:

var mongoose = require( 'mongoose' ),
    _ = require( 'lodash' ),
    request = require( 'request' ),
    helper = require( './helper' );

// Set up our spider schema with oldPath being our unique key to avoid duplicates
var gnatSchema = mongoose.Schema({
    oldPath: { type: String, unique: true },
    newPath: String,
    content: String,
    indexed: { 'type': Boolean, 'default': false },
    template: String
});

// Declare model and export
var Gnat = mongoose.model( 'Gnat', gnatSchema );

// Reset all gnats to not being indexed
exports.reset = function( cb ) {
    Gnat.update( { }, { indexed: true }, { multi: true }, cb );
};

// Remove all gnats
exports.clear = function( cb ) {
    Gnat.remove( {}, cb );
};

但是,在更改前几个文档后,重置和清除函数都会抛出以下错误(成功更改的数字似乎是随机的):

{ [MongoError: Exec error: PlanExecutor killed]
  name: 'MongoError',
  message: 'Exec error: PlanExecutor killed',
  index: 0,
  code: 96,
  errmsg: 'Exec error: PlanExecutor killed' }

我正在使用的数据库大约有2700个文档,但是在多次调用清除之后,即使将其降至1000以下,问题仍然存在。

我担心它可能与我的Mongo设置有关吗?我目前只是通过一个守护进程在本地运行Mongo,除此之外它还运行良好。任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我清理了我的数据库并从备份中重新导入,这似乎已经修复了它。如果情况发生变化,我会再次发帖。我的猜测是在调试过程中数据库ID和/或指针搞乱了。