journey
    title MongoDB 设置登录后无操作30分钟
    section 整体流程
    step 1 创建一个用户集合
    step 2 设置用户集合的过期时间
    step 3 设置用户登录过期时间
    step 4 设置用户登录后无操作过期时间

    section 详细步骤
    step 1 创建一个用户集合
        description 在 MongoDB 中创建一个用户集合来存储用户信息和相关的过期时间字段
        note 需要使用到 MongoDB 的 `db.createCollection` 方法,示例代码如下:
        ```
        db.createCollection("users")
        ```
    step 2 设置用户集合的过期时间
        description 在用户集合中设置过期时间字段,用于标记用户的创建时间
        note 需要使用到 MongoDB 的 `createIndexes` 方法,示例代码如下:
        ```
        db.users.createIndex({ "createdAt": 1 }, { expireAfterSeconds: 1800 })
        ```
        explanation `createdAt` 字段用于记录用户的创建时间,`expireAfterSeconds: 1800` 表示该字段会在30分钟后自动过期
    step 3 设置用户登录过期时间
        description 在用户集合中设置登录过期时间字段,用于标记用户的登录时间
        note 需要使用到 MongoDB 的 `updateOne` 方法,示例代码如下:
        ```
        db.users.updateOne(
            { "_id": <userId> },
            { $set: { "lastLoginAt": new Date() } }
        )
        ```
        explanation `userId` 为当前登录用户的 ID,`lastLoginAt` 字段用于记录用户的登录时间,`new Date()` 用于获取当前时间
    step 4 设置用户登录后无操作过期时间
        description 在用户集合中设置无操作过期时间字段,用于标记用户最后一次操作的时间
        note 需要使用到 MongoDB 的 `updateOne` 方法,示例代码如下:
        ```
        db.users.updateOne(
            { "_id": <userId> },
            { $set: { "lastActiveAt": new Date() } }
        )
        ```
        explanation `userId` 为当前登录用户的 ID,`lastActiveAt` 字段用于记录用户最后一次操作的时间,`new Date()` 用于获取当前时间

MongoDB 设置登录后无操作30分钟

在使用 MongoDB 进行开发时,有时候需要设置用户登录后无操作一段时间后自动退出的功能。本文将教你如何在 MongoDB 中实现这一功能。

整体流程

下面是实现该功能的整体流程:

步骤 描述
步骤1 创建一个用户集合
步骤2 设置用户集合的过期时间
步骤3 设置用户登录过期时间
步骤4 设置用户登录后无操作过期时间

详细步骤

步骤1:创建一个用户集合

在 MongoDB 中创建一个用户集合用于存储用户信息和相关的过期时间字段。可以使用 MongoDB 的 db.createCollection 方法来创建集合。

db.createCollection("users")

步骤2:设置用户集合的过期时间

在用户集合中设置过期时间字段,用于标记用户的创建时间。这样可以确保用户在一定时间后自动过期。可以使用 MongoDB 的 createIndexes 方法来设置过期时间。

db.users.createIndex({ "createdAt": 1 }, { expireAfterSeconds: 1800 })

createdAt 字段用于记录用户的创建时间,expireAfterSeconds: 1800 表示该字段会在30分钟后自动过期。

步骤3:设置用户登录过期时间

在用户集合中设置登录过期时间字段,用于标记用户的登录时间。这样可以判断用户的登录是否过期。可以使用 MongoDB 的 updateOne 方法来更新用户登录时间。

db.users.updateOne(
    { "_id": <userId> },
    { $set: { "lastLoginAt": new Date() } }
)

userId 为当前登录用户的 ID,lastLoginAt 字段用于记录用户的登录时间,new Date() 用于获取当前时间。

步骤4:设置用户登录后无操作过期时间

在用户集合中设置无操作过期时间字段,用于标记用户最后一次操作的时间。