我正在尝试使用针对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
。我做错了什么?
答案 0 :(得分:2)
Collection.createIndex
在Node mongodb驱动程序的3.0.0rc0和3.0.0版本中被破坏。它将忽略options对象参数。
这已在驱动程序的3.0.1版中修复。 (您可以看到修复here)。
将您的驱动程序更新到最新版本(例如npm i mongodb@3.0.4
),它应该按预期工作。