MongoDB 不删除 TTL 索引文档
Posted
技术标签:
【中文标题】MongoDB 不删除 TTL 索引文档【英文标题】:MongoDB not removing TTL indexed documents 【发布时间】:2016-08-03 20:31:58 【问题描述】:我知道关于这个问题还有其他问题;没有,(我试过),已经解决了我的问题。
使用 MongoDB 3.2.1、Mongoose 4.4.x、节点 0.12.9 或 4.2.6。
Mongoose 架构如下:
var schema = new Schema(
userId: type: Schema.Types.ObjectId, ref: 'User', required: true,
createdAt: type: Date, required: true, default: Date.now, expires: 10
);
在 Mongo Shell 和 RoboMongo 中都验证了索引:
我尝试过在不同的字段上设置 TTL 索引,使用不同的创建索引的方法,以及其他一些事情。然而,文件仍然存在,即使在放置一夜之后,将 createdAt
字段编辑为过去的某个时间。
想法?
【问题讨论】:
【参考方案1】:我有 MongoDB 3.2 并使用以下代码 sn-p 测试了解决方案。
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 秒)。我建议你获取最新的 mongoose,然后再试一次。
【讨论】:
Mongoose 版本是 4.4.12,这是当前版本。我猜这是我机器上本地安装 Mongo 的问题。我今天将在暂存服务器上进行测试,看看是否有任何改变。以上是关于MongoDB 不删除 TTL 索引文档的主要内容,如果未能解决你的问题,请参考以下文章