我正在创建一个简单的应用程序,我有这样的模型
import mongoose from "mongoose";
const urlSchema = new mongoose.Schema(
{
originalUrl: { type: String, required: true },
longUrl: { type: String, required: true, unique: true },
shortUrl: { type: String, required: true, unique: true },
click: {
type: Number,
default: 0,
},
},
{ timestamps: true }
);
export const Url = mongoose.model("Url", urlSchema);
字符串
所以现在的问题是,当在文档中创建这个模型的示例时,我发现有一个TTL索引,它设置了expiresAfterSeconds: 120
,并且文档基本上在两分钟后自动删除,并且我希望文档在特定时间后删除,更像是3天,所有创建的文档在2分钟后删除,我意识到有{timestaps: true}
会发生这种情况,当我摆脱它时,文档保持原样(文档不会自动删除)。我想知道为什么会发生这种情况,是否有一种方法可以将expiresAfterSeconds
的时间增加到大约3天或更长时间,或者是否有一种方法可以以其他方式进行设置,以及将来的原因如何完全禁止设置expireAfterSeconds: 120
,即使设置了{timestanps: true}
,因为我可能需要createdAt
和updatedAt
字段。我对mongoose和mongodb一般来说是相当陌生的,所以如果有人能帮助我,我会很感激,并解释为什么会发生这种情况,以及下次如何更好地避免这种情况。
另外,当我在mongo shell中运行我的db.urls.getIndexes()
时,这是返回的内容,以帮助您更好地理解我正在经历的事情哈哈:
[
{ v: 2, key: { _id: 1 }, name: '_id_' },
{
v: 2,
key: { longUrl: 1 },
name: 'longUrl_1',
background: true,
unique: true
},
{
v: 2,
key: { shortUrl: 1 },
name: 'shortUrl_1',
background: true,
unique: true
},
{
v: 2,
key: { createdAt: 1 },
name: 'createdAt_1',
background: true,
expireAfterSeconds: 120
}
]
型
1条答案
按热度按时间odopli941#
在您的架构中尝试此代码
字符串