MongoDB node.js:创建的索引忽略TTL

时间:2018-03-05 17:34:03

标签: node.js mongodb mlab ttl

我正在尝试使用针对Node.js的MongoDB驱动程序和在mLab上托管的Mongo服务器使用TTL创建索引。

Node version 9.3.0.
Driver version 3.0.0.rc0
mongod version: 3.4.10 (MMAPv1)

node.js中的代码:

var processCollection;

async function init (options) {
  processCollection = await options.db.collection('processes');

  await processCollection.dropIndexes();
  await processCollection.createIndex(
    { 'modified': 1 },
    { expireAfterSeconds: 3600 }
  );
}

DB中的结果:

db['system.indexes'].find()
{
  "v": 2,
  "key": {
    "modified": 1
  },
  "name": "modified_1",
  "ns": "e-consular.processes"
}

结果索引中缺少选项expireAfterSeconds。我做错了什么?

1 个答案:

答案 0 :(得分:2)

Collection.createIndex在Node mongodb驱动程序的3.0.0rc0和3.0.0版本中被破坏。它将忽略options对象参数。

这已在驱动程序的3.0.1版中修复。 (您可以看到修复here)。

将您的驱动程序更新到最新版本(例如npm i mongodb@3.0.4),它应该按预期工作。