首页 > 解决方案 > Golang 上的 MongoDB,获取最近 15 分钟内插入的记录

问题描述

我正在尝试获取在过去 15 分钟内插入的记录。

虽然它给了我在最后 15 分钟内插入的记录,但在 15 分钟过去后,它仍然显示在 15 分钟后插入的记录。我的代码:

    if len(userIds) > 0 {
        dashboardAggregations = append(dashboardAggregations, bson.M{"$match": bson.M{"_id": bson.M{"$in": userIds}}})
    }
    cursor, err = locationCollection.Aggregate(dbContext, dashboardAggregations)
    if err != nil {
        return nil, err
    }
    if len(dashboardAggregations) > 3 {
        dashboardAggregations = dashboardAggregations[:len(dashboardAggregations)-1]
    }

以下是我的聚合结构:

var dashboardAggregations = bson.A{
    bson.M{
        "$match": bson.M{
            "created_at": bson.M{
                "$gte": primitive.NewDateTimeFromTime(time.Now().Add(-15 * time.Minute)),
            },
        },
    },
    bson.M{
        "$sort": bson.M{
            "serial": -1,
        },
    },
    bson.M{
        "$group": bson.M{
            "_id":   "$userId",
            "users": bson.M{"$push": "$$ROOT"},
        },
    },
}

我提前感谢任何帮助。

标签: mongodbgo

解决方案


创建检查用户的新匹配聚合

bson.M{
        "$match": bson.M{
            "created_at": bson.M{
                "$gte": primitive.NewDateTimeFromTime(time.Now().Add(-15 * time.Minute)),
            },
            "user_id": "123123133123",
        },
    },

如果用户参数不存在,则此聚合

bson.M{
    "$match": bson.M{
        "created_at": bson.M{
            "$gte": primitive.NewDateTimeFromTime(time.Now().Add(-15 * time.Minute)),
        },
    },
},

推荐阅读