文档章节

MongoDB中设置expire过期自动删除

鱼煎
 鱼煎
发布于 2017/07/31 16:50
字数 352
阅读 8
收藏 0

关键词: expireAfterSeconds、TTL

TTL Time to Live

 

类似Redis中的expire机制,MongoDB也可以设置过期自动删除的表。

MongoDB的过期设置依赖索引(TTL-index),设置过期字段使用的索引后,插入数据时在该字段指定日期时间,

经过在创建索引时指定的秒数后,该记录会被MongoDB认为已经过期,然后删除。

 

JS版

db.test_timer.createIndex({"timer":1}, {expireAfterSeconds: 10})
db.test_timer.insert({"timer":new Date(), "a":'abc'})  // 指定当前时间
db.test_timer.insert({"timer": new Date("2017/3/25 13:11:00"), "c": "CC"})  // 指定任意时间

 

Python版

创建索引和指定过期时间的方式类似,要注意的是过期时间的字段必须使用UTC时间,否则无法正常删除记录
因此指定过期时间删除虽然也可以起作用,但是不能确定删除时间非常精确。

from pymongo import MongoClient
cli = MongoClient()
db = cli['test']
tbl = db['test_timer2']
tbl.create_index([("timer2", 1)], expireAfterSeconds=10)
from datetime import datetime
tbl.insert({"timer2": datetime.utcnow(), "user": "Hehehehe!"})

from time import strptime, time, mktime
t1 = strptime("2017/3/25 13:36:02", "%Y/%m/%d %H:%M:%S")
t2 = datetime.utcfromtimestamp(mktime(t1))
tbl.insert({"timer2": t2, "CC": 12345})
tbl.insert({"timer2": 123, "TT": 1})  # TTL-index字段也可以是其他值,这是就不能被自动删除
cli.close()

 

经过测试,实际删除数据的时间与索引加上数据指定的时间点之间存在偏移,可能是MongoDB删除数据机制的问题。

本文转载自:

共有 人打赏支持
鱼煎
粉丝 6
博文 183
码字总数 38711
作品 0
深圳
技术主管
私信 提问
mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、等等)

最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网:https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的...

Airship
06/01
0
0
关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用

先说我自己用的情况: 最先用的memcache ,用于键值对关系的服务器端缓存,用于存储一些常用的不是很大,但需要快速反应的数据 然后,在另一个地方,要用到redis,然后就去研究了下redis. 一看...

niceguy_php
2014/06/18
0
2
MongoDB之compact操作详解

摘要: compact操作步骤很多,但是可以有效减少磁盘使用量。 MongoDB与磁盘 当Fundebug处理的数据越来越多,这导致MongoDB的磁盘使用量越来越多,增长也越来越快。于是,我开始定时删除过期数...

Fundebug
04/27
0
0
MongoDB 4.0 正式发布,支持多文档事务

MongoDB 4.0 已正式发布,MongoDB 是一个开源文档数据库,提供高性能、高可用性和自动扩展。 下载地址:MongoDB Download Center 在 4.0 正式发布之前,我们已经报道了其相关更新信息,此次正...

h4cd
06/29
0
27
win7下安装mongoDB数据库

第一步:到 http://www.mongodb.org/downloads 网站去下载对应系统的版本mongoDB数据库,如我下载的 (1)创建一个D:Program FilesmongoDB目录作为mongoDB的安装的目录,解压下载的数据库包,...

EDIAGD
2013/01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SonarQube+Scanners代码质量管理

简介 sonaqube是一个开源代码质量管理平台,致力于持续分析和测量技术质量。 系统构成 SonarQube平台由4部分组成: SonarQube服务器 Web服务器的开发者,管理者,浏览质量快照和配置SonarQu...

阿dai
55分钟前
0
0
mysql-router 8 yum安装

1.配置安装源 #配置MySQL5.7的安装源 #https://repo.mysql.com/mysql57-community-release-el7.rpm #https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm rpm -Uvh https:/......

MichaelShu
今天
0
0
     甲骨人-MySQL网络课-day03

===================================================================================== ======================= 第三章 mysql SQL语句 1、mysql接口自带命令 1.1、\h 或 help 或 ? 1.2、......

hnairdb
今天
0
0
Redis异构集群之间数据迁移方案

一、Redis集群迁移工具 最近在做Redis数据迁移,网上找了两款开源的Redis迁移工具。 第一种:redis-port Codis官方提供的一个工具,redis-port是一个Redis工具,通过解析rdb文件,实现Redis...

IT--小哥
今天
3
0
解压zip包(zip4j)

1:引入zip4j_1.3.2.jar 2:源码如下: package test;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import net.lingal......

uug
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部