如何使用TTL而不是整个文档将MongoDB中的各个字段设置为在一定时间后过期?

时间:2018-10-25 06:05:04

标签: python mongodb pymongo

对于以下问题,我需要一些帮助/建议。我编写了一个程序,该程序可读取推文,并在推文中有匹配的关键字时向用户授予分数。然后,我将推文ID存储在数据库中,以使用户无法“欺骗”并将同一条推文赎回。该数据库当前看起来像这样。

{
    "_id": {
        "$oid": "5bd15b68b6a8dfb7b1177dbe"
    },
    "handle": "twitterhandle",
    "member_id": "0000000",
    "points": 3,
    "tweets": [
        "tweet1",
        "tweet2",
        "tweet3"
    ]
}

每隔24小时,我想将tweets字段重置为None-但是,我似乎找不到用TTL进行此操作的方法-似乎唯一的选择是删除所有字段,而不是就是我想要的。可以用pymongo做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我想你可以做这样的事情:

TweetSchema :
 {
    "tweet": onlyOneTweet
    "handle": "twitterhandle",
    "member_id": "0000000",
    "points": 3,
     "createdAt":{
        type:Date,
        default:Date.now,
        expires: (60*60*24) // 1 day
    },

过期将自动删除24小时之前创建的所有文档。 当您具有memberId引用时,您可以从一个用户检索所有推文。 我不确定您是否可以将TTL用于SubDocument,因为该功能用于删除文档。