小编adr*_*mer的帖子

Mongoose到期财产不能正常运作

答案

因此,当我在Mongoose中使用expires属性进行测试,我成功地在数据库中设置了TTL索引,但没有意识到当我在我的mongoose模式中更改时间时我需要删除以前的TTL索引首先退出数据库.

TLDR; - 停止应用程序并删除要更改的字段的TTL索引(请参阅下面的评论/答案)

得到索引

好的,以下示例中的代码,在调用之后: db.sampletexts.getIndexes() 我得到了

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "test.sampletexts"
    },
    { 
        "v" : 1,
        "key" : {
            "createdAt" : 1
        },
        "name" : "createdAt_1",
        "ns" : "test.sampletexts",
        "expireAfterSeconds" : 5400,
        "background" : true,
        "safe" : null
    }
]
Run Code Online (Sandbox Code Playgroud)

所以虽然我指定60秒,它的设置为5400?呵呵.

第二次更新

这是我试图运行的最小例子.我必须在这里遗漏一些东西,因为我实际上将我的模型从原始项目复制到示例(减去一些额外的字符串字段),现在文档根本没有过期?拜托,让我感到愚蠢,并意识到我错过了一些明显的东西.我想了一下,设置一个间隔来运行文档和当前时间之间的时差检查,然后意识到通常会扩展的许多查询运行得有多糟糕.嗯...

MongoDB v3.0.1 && Mongoose v4.0.1

相关代码:/routes/index.js


我运行的一些测试值:

整个领域看起来像这样

createdAt: { type: Date, expires: 3600, default: …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb nosql

3
推荐指数
1
解决办法
3223
查看次数

标签 统计

mongodb ×1

mongoose ×1

nosql ×1