使用猫鼬在 mongodb 中处理更新插入功能时,TTL 无法正常工作



嗨,我在 mongodb 中遇到了一个名为 ttl 的概念,并在使用猫鼬的插入操作中尝试了相同的概念。下面是代码

mongoose = require('mongoose');
var Schema = mongoose.Schema;
var META_CTS_DB = mongoose.createConnection('mongodb://localhost/META');
var ttl= require('mongoose-ttl');
var date1=new Date();
var ServiceSchema = new Schema({
_id:String, 
CURDATE:{type:Date,index:true},
SERVICE_PROTOCOL:String, 
});
ServiceSchema.plugin(ttl, { ttl:5000 });
var MasterDBdata = META.model('ServiceSchema',ServiceSchema,'API_KEY_91994094177912_SERVICE_ID_0008_SERVICE_CONFIG');
var item = new MasterDBdata({'_id':'SERVICE_ID_0006','CURDATE':date1,'SERVICE_PROTOCOL':'Nil'});
item.save();

ttl 对此工作正常,并且集合确实被删除了。但是当我对下面的更新功能执行相同的操作时

MasterDBdata.update({'_id':'SERVICE_ID_0006'},{'CURDATE':date1,'SERVICE_PROTOCOL':'hhl'},{upsert:true},function (err){
                                                        if (err) return handleError(err);
                                                        console.log('n data stored in Database...')});

ttl 函数似乎无法正常工作。任何关于 ttl 行为及其在这些函数上的性能的想法都将非常有帮助。提前致谢

mongoose-ttl插件使用自己的隐藏__ttl字段来跟踪文档的过期时间,因此更新您自己的CURDATE字段不会产生任何影响。

如果您使用的是MongoDB 2.2,则应使用对TTL集合的本机支持而不是插件,CURDATE定义为expires键字段,如上一个问题中所述。

最新更新