我使用MongoDB数据库创建了一个时间序列集合,我希望数据会在2分钟后自动删除,但它没有发生。我检查了数据库,发现数据仍然存在。
我使用MongoDB数据库创建了一个time-series
集合,我需要在2分钟后删除nonce
字段中的数据。我使用MongoDB Compass创建了它,参数如下:
但是,当我在node中使用mongoose插入数据时。js,2分钟后数据不删除。
下面是我使用的代码:
const nonceSchema = new mongoose.Schema({
nonce: String,
ts: Date,
})
const nonceModel = mongoose.model('nonce', nonceSchema,'nonce');
await nonceModel.create({
nonce: nonce,
ts: new Date(),
});
这段代码正确地插入数据,但不会自动删除数据。
[{
"ts": {
"$date": "2023-04-29T06:28:21.345Z"
},
"nonce": "R8tYOm15zEu1BupI",
"_id": {
"$oid": "644cb90554447c607a4a5a37"
},
"__v": 0
},{
"ts": {
"$date": "2023-04-29T06:28:47.098Z"
},
"nonce": "fFHGD8h6LwUDFIWo",
"_id": {
"$oid": "644cb91f54447c607a4a5a3b"
},
"__v": 0
}]
我该怎么办?谢谢你的帮助。
2条答案
按热度按时间zfciruhq1#
解决方案:将
nonce
创建为常规集合,而不是time series
,并将以下代码添加到JavaScript中:e0uiprwp2#
在向集合中插入数据之前,需要创建TTL索引。如果在插入数据后创建TTL索引,则不会根据TTL索引自动删除现有数据。