|
@@ -41,21 +41,27 @@ func (b *Bluk) Insert(doc interface{}) {
|
|
|
func (b *Bluk) Update(doc ...interface{}) {
|
|
|
write := mongo.NewUpdateOneModel()
|
|
|
write.SetFilter(doc[0])
|
|
|
- write.SetUpdate(doc[1])
|
|
|
+ ue := ObjToM(doc[1])
|
|
|
+ autoUpdateTime(b.ms.db, b.ms.coll, ue)
|
|
|
+ write.SetUpdate(ue)
|
|
|
write.SetUpsert(false)
|
|
|
b.writes = append(b.writes, write)
|
|
|
}
|
|
|
func (b *Bluk) UpdateAll(doc ...interface{}) {
|
|
|
write := mongo.NewUpdateManyModel()
|
|
|
write.SetFilter(doc[0])
|
|
|
- write.SetUpdate(doc[1])
|
|
|
+ ue := ObjToM(doc[1])
|
|
|
+ autoUpdateTime(b.ms.db, b.ms.coll, ue)
|
|
|
+ write.SetUpdate(ue)
|
|
|
write.SetUpsert(false)
|
|
|
b.writes = append(b.writes, write)
|
|
|
}
|
|
|
func (b *Bluk) Upsert(doc ...interface{}) {
|
|
|
write := mongo.NewUpdateOneModel()
|
|
|
write.SetFilter(doc[0])
|
|
|
- write.SetUpdate(doc[1])
|
|
|
+ ue := ObjToM(doc[1])
|
|
|
+ autoUpdateTime(b.ms.db, b.ms.coll, ue)
|
|
|
+ write.SetUpdate(ue)
|
|
|
write.SetUpsert(true)
|
|
|
b.writes = append(b.writes, write)
|
|
|
}
|
|
@@ -194,15 +200,27 @@ func (ms *MgoSess) RemoveAll(filter interface{}) (*mongo.DeleteResult, error) {
|
|
|
func (ms *MgoSess) Upsert(filter, update interface{}) (*mongo.UpdateResult, error) {
|
|
|
ct := options.Update()
|
|
|
ct.SetUpsert(true)
|
|
|
- return ms.M.C.Database(ms.db).Collection(ms.coll).UpdateOne(ms.M.Ctx, filter, update, ct)
|
|
|
+ ue := ObjToM(update)
|
|
|
+ autoUpdateTime(ms.db, ms.coll, ue)
|
|
|
+ return ms.M.C.Database(ms.db).Collection(ms.coll).UpdateOne(ms.M.Ctx, filter, ue, ct)
|
|
|
}
|
|
|
func (ms *MgoSess) UpsertId(filter, update interface{}) (*mongo.UpdateResult, error) {
|
|
|
ct := options.Update()
|
|
|
ct.SetUpsert(true)
|
|
|
- return ms.M.C.Database(ms.db).Collection(ms.coll).UpdateOne(ms.M.Ctx, map[string]interface{}{"_id": filter}, update, ct)
|
|
|
+ ue := ObjToM(update)
|
|
|
+ autoUpdateTime(ms.db, ms.coll, ue)
|
|
|
+ return ms.M.C.Database(ms.db).Collection(ms.coll).UpdateOne(ms.M.Ctx, map[string]interface{}{"_id": filter}, ue, ct)
|
|
|
}
|
|
|
func (ms *MgoSess) UpdateId(filter, update interface{}) error {
|
|
|
- _, err := ms.M.C.Database(ms.db).Collection(ms.coll).UpdateOne(ms.M.Ctx, map[string]interface{}{"_id": filter}, update)
|
|
|
+ ue := ObjToM(update)
|
|
|
+ autoUpdateTime(ms.db, ms.coll, ue)
|
|
|
+ _, err := ms.M.C.Database(ms.db).Collection(ms.coll).UpdateOne(ms.M.Ctx, map[string]interface{}{"_id": filter}, ue)
|
|
|
+ return err
|
|
|
+}
|
|
|
+func (ms *MgoSess) Update(filter, update interface{}) error {
|
|
|
+ ue := ObjToM(update)
|
|
|
+ autoUpdateTime(ms.db, ms.coll, ue)
|
|
|
+ _, err := ms.M.C.Database(ms.db).Collection(ms.coll).UpdateOne(ms.M.Ctx, filter, ue)
|
|
|
return err
|
|
|
}
|
|
|
func (ms *MgoSess) Count() (int64, error) {
|
|
@@ -467,14 +485,16 @@ func (m *MongodbSim) Update(c string, q, u interface{}, upsert bool, multi bool)
|
|
|
ct.SetUpsert(true)
|
|
|
}
|
|
|
coll := m.C.Database(m.DbName).Collection(c)
|
|
|
+ ue := ObjToM(u)
|
|
|
+ autoUpdateTime(m.DbName, c, ue)
|
|
|
var err error
|
|
|
if multi {
|
|
|
- _, err = coll.UpdateMany(m.Ctx, ObjToM(q), ObjToM(u), ct)
|
|
|
+ _, err = coll.UpdateMany(m.Ctx, ObjToM(q), ue, ct)
|
|
|
} else {
|
|
|
- _, err = coll.UpdateOne(m.Ctx, ObjToM(q), ObjToM(u), ct)
|
|
|
+ _, err = coll.UpdateOne(m.Ctx, ObjToM(q), ue, ct)
|
|
|
}
|
|
|
if err != nil {
|
|
|
- log.Println("删除错误", err.Error())
|
|
|
+ log.Println("更新错误", err.Error())
|
|
|
return false
|
|
|
}
|
|
|
return true
|
|
@@ -489,7 +509,9 @@ func (m *MongodbSim) UpdateById(c string, id interface{}, set interface{}) bool
|
|
|
} else {
|
|
|
q["_id"] = id
|
|
|
}
|
|
|
- _, err := m.C.Database(m.DbName).Collection(c).UpdateOne(m.Ctx, q, ObjToM(set))
|
|
|
+ ue := ObjToM(set)
|
|
|
+ autoUpdateTime(m.DbName, c, ue)
|
|
|
+ _, err := m.C.Database(m.DbName).Collection(c).UpdateOne(m.Ctx, q, ue)
|
|
|
if nil != err {
|
|
|
log.Println("UpdateByIdError", err)
|
|
|
return false
|
|
@@ -527,13 +549,17 @@ func (m *MongodbSim) NewUpdateBulk(db, c string, upsert, multi bool, doc ...[]ma
|
|
|
if multi {
|
|
|
write := mongo.NewUpdateManyModel()
|
|
|
write.SetFilter(d[0])
|
|
|
- write.SetUpdate(d[1])
|
|
|
+ ue := ObjToM(d[1])
|
|
|
+ autoUpdateTime(m.DbName, c, ue)
|
|
|
+ write.SetUpdate(ue)
|
|
|
write.SetUpsert(upsert)
|
|
|
writes = append(writes, write)
|
|
|
} else {
|
|
|
write := mongo.NewUpdateOneModel()
|
|
|
write.SetFilter(d[0])
|
|
|
- write.SetUpdate(d[1])
|
|
|
+ ue := ObjToM(d[1])
|
|
|
+ autoUpdateTime(m.DbName, c, ue)
|
|
|
+ write.SetUpdate(ue)
|
|
|
write.SetUpsert(upsert)
|
|
|
writes = append(writes, write)
|
|
|
}
|
|
@@ -734,3 +760,15 @@ func ToObjectIds(ids []string) []primitive.ObjectID {
|
|
|
}
|
|
|
return _ids
|
|
|
}
|
|
|
+
|
|
|
+//自动添加更新时间
|
|
|
+func autoUpdateTime(db, coll string, ue *bson.M) {
|
|
|
+ if db == "qfw" && coll == "user" {
|
|
|
+ set := ObjToM((*ue)["$set"])
|
|
|
+ if *set == nil {
|
|
|
+ set = &bson.M{}
|
|
|
+ }
|
|
|
+ (*set)["auto_updatetime"] = time.Now().Unix()
|
|
|
+ (*ue)["$set"] = set
|
|
|
+ }
|
|
|
+}
|