2016-04-13 89 views
2

我知道还有关于这个问题的其他问题;没有,(我曾尝试过)解决了我的问题。MongoDB不删除TTL索引文件

使用MongoDB 3.2.1,Mongoose 4.4.x,节点0.12.9或4.2.6。

猫鼬架构的样子:

var schema = new Schema({ 
    userId: {type: Schema.Types.ObjectId, ref: 'User', required: true}, 
    createdAt: {type: Date, required: true, default: Date.now, expires: 10} 
}); 

指数都在蒙戈壳牌和RoboMongo验证:

RoboMongo Index screencap

我试过设置在不同领域的TTL指标,采用不同的方法创建索引和其他一些东西。然而,这些文件仍然存在,即使让它坐过夜,编辑过去的时间也是如此。

想法?

回答

0

我有MongoDB 3.2和测试解决方案以下代码片段。

var MongoClient = require('mongodb').MongoClient, 
    assert = require('assert'), 
    mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 

var url = "mongodb://localhost:27017/test" 
mongoose.connect(url); 

var schema = new Schema({ 
    userId: { 
     type: Schema.Types.ObjectId, 
     ref: 'User', required: true 
    }, 
    createdAt: { 
     type: Date, 
     required: true, 
     default: Date.now, 
     expires: 10 
    } 
}); 

var User = mongoose.model('User', schema); 

var user = new User({ userId: new mongoose.Types.ObjectId }); 

user.save(function(err, doc) { 
    if (err) { 
     console.log(err); 
    } 
    mongoose.disconnect(); 
}); 

我看到该文档在一分钟后(不完全是10秒)大致被清除。我建议你得到最新的猫鼬,然后再试一次。

+0

猫鼬版本是4.4.12,这是当前版本。我猜这是我的机器上Mongo的本地安装问题。我将在今天的临时服务器上进行测试,看看是否会改变任何内容。 – EddieDean