diff --git a/mongo/mongo.go b/mongo/mongo.go index c25d86a..c86cb62 100644 --- a/mongo/mongo.go +++ b/mongo/mongo.go @@ -197,7 +197,6 @@ func (m *MongoDB) Find(ctx context.Context, filter bson.M, result interface{}, c opt := options.Find().SetSkip(skip) if limit != -1 { opt.SetLimit(limit) - } else { total, err = m.Count(ctx, filter, collection) if err != nil || total == 0 { return @@ -521,53 +520,6 @@ func (m *MongoDB) Update(ctx context.Context, filter bson.M, update bson.M, coll return } -// RandomSoftDelete 随机软删除个文档的 _id -func (m *MongoDB) RandomSoftDelete(ctx context.Context, limit int, collection string, opts ...options.Lister[options.UpdateManyOptions]) (result *mongo.UpdateResult, err error) { - source, err := m.getDataSource() - if err != nil { - return nil, err - } - db := source.Database() - - _ = opts - pipeline := mongo.Pipeline{ - bson.D{{Key: "$addFields", Value: bson.D{{Key: "random", Value: bson.M{"$rand": bson.M{}}}}}}, - bson.D{{Key: "$match", Value: bson.D{{Key: "isDeleted", Value: false}}}}, - bson.D{{Key: "$sort", Value: bson.D{{Key: "random", Value: -1}}}}, - bson.D{{Key: "$limit", Value: limit}}, - bson.D{{Key: "$project", Value: bson.D{{Key: "_id", Value: 1}}}}, - } - cursor, err := db.Collection(collection).Aggregate(ctx, pipeline) - if err != nil { - return - } - defer cursor.Close(ctx) - - var idsToUpdate []bson.ObjectID - for cursor.Next(ctx) { - var result bson.M - if err := cursor.Decode(&result); err != nil { - return nil, err - } - id := result["_id"].(bson.ObjectID) - idsToUpdate = append(idsToUpdate, id) - } - if err := cursor.Err(); err != nil { - return nil, err - } - fmt.Printf("准备更新的随机文档ID: %v\n", idsToUpdate) - - if len(idsToUpdate) > 0 { - filter := bson.D{{Key: "_id", Value: bson.D{{Key: "$in", Value: idsToUpdate}}}} - update := bson.D{{Key: "$set", Value: bson.D{{Key: "isDeleted", Value: true}}}} - _, err = db.Collection(collection).UpdateMany(ctx, filter, update) - if err != nil { - return - } - } - return -} - // SaveOrUpdate 批量增加或修改 func (m *MongoDB) SaveOrUpdate(ctx context.Context, filter []bson.M, update []bson.M, collection string, opts ...options.Lister[options.UpdateManyOptions]) (result *mongo.BulkWriteResult, err error) { source, err := m.getDataSource()