|
@@ -237,6 +237,24 @@ func (m *MongodbSim) UpdateById(c, id string, doc map[string]interface{}) bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
+//更新Update
|
|
|
+func (m *MongodbSim) Update(c string, query map[string]interface{}, up map[string]interface{}) (map[int64]interface{}, bool) {
|
|
|
+ m.Open()
|
|
|
+ defer m.Close()
|
|
|
+ coll := m.C.Database(m.DbName).Collection(c)
|
|
|
+ var writes []mongo.WriteModel
|
|
|
+ write := mongo.NewUpdateOneModel()
|
|
|
+ write.SetFilter(query)
|
|
|
+ write.SetUpdate(up)
|
|
|
+ write.SetUpsert(true)
|
|
|
+ writes = append(writes, write)
|
|
|
+ r, err := coll.BulkWrite(m.Ctx, writes)
|
|
|
+ if err != nil {
|
|
|
+ return nil, false
|
|
|
+ }
|
|
|
+ return r.UpsertedIDs, true
|
|
|
+}
|
|
|
+
|
|
|
//删除by id
|
|
|
func (m *MongodbSim) DeleteById(c, id string) int64 {
|
|
|
m.Open()
|
|
@@ -262,11 +280,12 @@ func (m *MongodbSim) Delete(c string, query map[string]interface{}) int64 {
|
|
|
}
|
|
|
|
|
|
//findbyid
|
|
|
-func (m *MongodbSim) FindById(c, id string) map[string]interface{} {
|
|
|
+func (m *MongodbSim) FindById(c, id string, fields interface{}) map[string]interface{} {
|
|
|
m.Open()
|
|
|
defer m.Close()
|
|
|
coll := m.C.Database(m.DbName).Collection(c)
|
|
|
- r := coll.FindOne(m.Ctx, map[string]interface{}{"_id": StringTOBsonId(id)})
|
|
|
+ op := options.FindOne()
|
|
|
+ r := coll.FindOne(m.Ctx, map[string]interface{}{"_id": StringTOBsonId(id)}, op.SetProjection(fields))
|
|
|
v := map[string]interface{}{}
|
|
|
r.Decode(&v)
|
|
|
return v
|
|
@@ -277,6 +296,8 @@ func (m *MongodbSim) FindOne(c string, query map[string]interface{}) map[string]
|
|
|
m.Open()
|
|
|
defer m.Close()
|
|
|
coll := m.C.Database(m.DbName).Collection(c)
|
|
|
+ //op := options.FindOne()
|
|
|
+ //r := coll.FindOne(m.Ctx, query, op.SetProjection(fields))
|
|
|
r := coll.FindOne(m.Ctx, query)
|
|
|
v := map[string]interface{}{}
|
|
|
r.Decode(&v)
|