“MongoError:没有这样的CMD:createIndexes”使用OpenShift

我正在创build一个使用agenda.js发送提醒的node.js应用程序。 当我在本地testing它时,它完美的工作,但是当我在OpenShift上testing它,我得到以下错误信息:

MongoError: No such cmd: createIndexes 

只有在使用了agenda.js的情况下,才会将新提醒的信息发送到服务器时才会出现此错误。

我查了一下createIndexes,看来它是在MongoDB 2.6版本中实现的,OpenShift目前只支持2.4版本。

我的问题是,有没有办法解决这个问题? 也许是手动升级到最新版本的MongoDB的方法,或者根本不使用盒式磁带(不知道实际上是什么)?

在2.6之前,没有一个名为CreateIndexes的内部命令。 有必要直接在system.indexes集合中插入和对象。

在mongo shell上,有两个助手,名字不同:

  • db.collection.createIndex ,现在仍然存在;
  • db.collection.ensureIndex ,从2.6上删除。

我不明白究竟是发出create index命令。 它是你的SDK吗? 因为它应该只做一次,而不是每一个插入。

我有同样的问题,作为一个解决方法,使用议程0.6.28来代替(因为它在这个版本的以前的项目中工作)。

请注意,“议程”在这个较低版本中不会发布“准备好”事件,所以最好直接调用“开始”函数:

 agenda.define('delete old session logs', jobs.cleanSessionLogs); agenda.on('fail', function(err, job) { errorLog.error({ err: err, job: job }); }); agenda.every('1 hour', 'delete old session logs'); agenda.start(); 

代替:

 agenda.define('delete old session logs', jobs.cleanSessionLogs); agenda.on('fail', function(err, job) { errorLog.error({ err: err, job: job }); }); agenda.on('ready', function() { agenda.every('1 hour', 'delete old session logs'); agenda.start(); });