mongoDB 期限がきたらデータを削除するindexを作成する

mongoDB 期限がきたらデータを削除するindexを作成する

mongoDBで、期限がきたらデータを削除するindexを作成する手順を記述してます。「expireAfterSeconds」に秒単位で期限を指定することで確認することができます。

環境

  • OS CentOS Stream release 9
  • MongoDB 6.0.2

手順

期限がきたらデータを削除するindexを作成するには、「expireAfterSeconds」で「期限」を設定します。

db.コレクション名.createIndex({フィールド名:1},{expireAfterSeconds:秒, name:"インデックス名"})

実際に、以下のデータベース「hoge」にある「foo」というコレクションに設定してみます。

> db.foo.createIndex(   {created_at:1},   {expireAfterSeconds:60, name:"hoge_idx"} )

hoge_idx

フィールド名「created_at」がある適当なデータをinsertして1分待つと、

> db.foo.insert({name:'jiro', created_at:new Date()});

{
  acknowledged: true,
  insertedIds: { '0': ObjectId("639acae46dcdc72cf1d5b3cf") }
}

データが消えていることが確認できると思います。

> db.foo.find()
[
  {
    _id: ObjectId("639ab5816dcdc72cf1d5b3ca"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _id: ObjectId("639acae46dcdc72cf1d5b3cf"),
    name: 'jiro',
    created_at: ISODate("2022-12-15T07:21:08.020Z")
  }
]

> db.foo.find()
[
  {
    _id: ObjectId("639ab5816dcdc72cf1d5b3ca"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  }
]