Ama*_*a G 34 mongoose mongodb node.js
以下是可以通过mongo终端设置集合的到期时间(TTL)的命令:
db.log.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )
Run Code Online (Sandbox Code Playgroud)
如何使用mongoose从Node.js中的代码执行此操作?
Joh*_*yHK 79
在Mongoose中,您可以Date通过该字段expires的架构定义中的属性在字段上创建TTL索引:
// expire docs 3600 seconds after createdAt
new Schema({ createdAt: { type: Date, expires: 3600 }});
Run Code Online (Sandbox Code Playgroud)
注意:
createdAt在创建文档时设置为当前时间,default也可以按照此处的建议添加一个为您执行此操作的时间.
{ createdAt: { type: Date, expires: 3600, default: Date.now }}Sad*_*ori 12
这段代码对我有用.
可能有帮助
let currentSchema = mongoose.Schema({
id: String,
name: String,
packageId: Number,
age: Number
}, {timestamps: true});
currentSchema.index({createdAt: 1},{expireAfterSeconds: 3600});
Run Code Online (Sandbox Code Playgroud)
expires如果您不想处理过期时间计算并提高架构的整体可读性,则提供一个字符串也可以与Mongoose很好地配合使用。
例如,在这里我们将设置expires为2m(2分钟),猫鼬对我们来说将转换为120秒:
var TestSchema = new mongoose.Schema({
name: String,
createdAt: { type: Date, expires: '2m', default: Date.now }
});
Run Code Online (Sandbox Code Playgroud)
猫鼬会在后台创建一个索引,并expireAfterSeconds在这种情况下自动将设置为120秒(由2m指定)。
重要的是要注意,TTL过程每60秒运行一次,因此并不总是很准时。
| 归档时间: |
|
| 查看次数: |
36463 次 |
| 最近记录: |