gpt4 book ai didi

node.js - MongoDB 不删除 TTL 索引文档

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:31 25 4
gpt4 key购买 nike

我知道还有其他关于此问题的问题;没有一个(我已经尝试过)解决了我的问题。

使用 MongoDB 3.2.1、Mongoose 4.4.x、Node 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 中均经过验证:

RoboMongo Index screencap

我尝试过在不同的字段上设置 TTL 索引,使用不同的创建索引的方法以及其他一些方法。然而,即使将其放置过夜并将 createdAt 字段编辑为过去的某个时间,文档仍然保留下来。

想法?

最佳答案

我有 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 秒)后被删除。我建议您获取最新的 Mongoose 并重试。

关于node.js - MongoDB 不删除 TTL 索引文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com