Best Keploy code snippet using mgo.Upsert
session_test.go
Source:session_test.go
...35 myField := "myfield"36 t1 := time.Now()37 t2 := t1.Add(10 * time.Second)38 tsmgoC, _ := s.C(dbName, colName)39 tsmgoC.Upsert(myField, TSRecord{t1, 1}, TSRecord{t2, 2})40 last, _ := tsmgoC.Last(myField)41 fmt.Println(last.Value)42 records, _ := tsmgoC.Interval(myField, t1, t2)43 sort.Sort(InverseChronologicalOrdering(records))44 fmt.Println(records[0].Value, records[1].Value)45 // Output: 246 // 2 147}48func TestCollection_TSUpsert_oneRecord(t *testing.T) {49 mgoSession = mongoDB.Session()50 defer mongoDB.Wipe()51 defer mgoSession.Close()52 is := is.New(t)53 s := NewSession(mgoSession)54 defer s.Close()55 tsmgoC, err := s.C(dbName, colName)56 is.NoErr(err) // s.C(dbName, colName)57 t1 := time.Now()58 res1, err := tsmgoC.Upsert(type1, TSRecord{t1, 1})59 is.NoErr(err) // tsmgoC.TSUpsert(type1, TSRecord{t1, 1}) error60 is.Equal(1, res1.Matched) // res1.Matched61 is.Equal(0, res1.Modified) // res1.Modified62 var records []TSRecord63 mgoC := mgoSession.DB(dbName).C(colName)64 is.NoErr(mgoC.Find(bson.M{typeField: type1}).All(&records)) // mgoC.Find.All error65 is.Equal(1, len(records)) // len(records)66 is.Equal(records[0].Timestamp.Unix(), t1.In(time.UTC).Unix())67 is.Equal(records[0].Value.(int), 1)68}69func TestCollection_TSUpsert_override(t *testing.T) {70 mgoSession = mongoDB.Session()71 defer mongoDB.Wipe()72 defer mgoSession.Close()73 is := is.New(t)74 s := NewSession(mgoSession)75 defer s.Close()76 tsmgoC, err := s.C(dbName, colName)77 is.NoErr(err) // s.C(dbName, colName)78 t1 := time.Now()79 res1, err := tsmgoC.Upsert(type1, TSRecord{t1, 1})80 is.NoErr(err) // tsmgoC.TSUpsert(type1, TSRecord{t1, 1}) error81 is.Equal(1, res1.Matched) // res1.Matched82 is.Equal(0, res1.Modified) // res1.Modified83 res2, err := tsmgoC.Upsert(type1, TSRecord{t1, 2})84 is.NoErr(err) // tsmgoC.TSUpsert(type1, TSRecord{t1, 2}) error85 is.Equal(1, res2.Matched) // res2.Matched86 is.Equal(1, res2.Modified) // res2.Modified87 var records []TSRecord88 mgoC := mgoSession.DB(dbName).C(colName)89 is.NoErr(mgoC.Find(bson.M{typeField: type1}).All(&records)) // mgoC.Find.All error90 is.Equal(1, len(records)) // len(records)91 is.Equal(records[0].Timestamp.Unix(), t1.In(time.UTC).Unix())92 is.Equal(records[0].Value.(int), 2)93}94func TestCollection_TSUpsert_multipleRecords(t *testing.T) {95 mgoSession = mongoDB.Session()96 defer mongoDB.Wipe()97 defer mgoSession.Close()98 is := is.New(t)99 s := NewSession(mgoSession)100 defer s.Close()101 tsmgoC, err := s.C(dbName, colName)102 is.NoErr(err) // s.C(dbName, colName)103 t1 := time.Now()104 t2 := t1.Add(10 * time.Second)105 res1, err := tsmgoC.Upsert(type1, TSRecord{t1, 1}, TSRecord{t2, 2})106 is.NoErr(err) // tsmgoC.TSUpsert(type1, TSRecord{t1, 1}, TSRecord{t2, 2}) error107 is.Equal(2, res1.Matched) // res1.Matched108 is.Equal(0, res1.Modified) // res1.Modified109 type2 := "type2"110 res2, err := tsmgoC.Upsert(type2, TSRecord{t1, 3})111 is.NoErr(err) // tsmgoC.TSUpsert(type1, TSRecord{t1, 1}, TSRecord{t2, 2}) error112 is.Equal(1, res2.Matched) // res2.Matched113 is.Equal(0, res2.Modified) // res2.Modified114 mgoC := mgoSession.DB(dbName).C(colName)115 var rec1 []TSRecord116 is.NoErr(mgoC.Find(bson.M{typeField: type1}).All(&rec1)) // mgoC.Find("type":"type1").All() error117 is.Equal(2, len(rec1)) // len(rec1)118 is.Equal(rec1[0].Timestamp.Unix(), t1.In(time.UTC).Unix())119 is.Equal(rec1[0].Value.(int), 1)120 is.Equal(rec1[1].Timestamp.Unix(), t2.In(time.UTC).Unix())121 is.Equal(rec1[1].Value.(int), 2)122 var rec2 []TSRecord123 is.NoErr(mgoC.Find(bson.M{typeField: type2}).All(&rec2)) // mgoC.Find("type":"type2").All error124 is.Equal(1, len(rec2)) // len(rec2)125 is.Equal(rec2[0].Timestamp.Unix(), t1.In(time.UTC).Unix())126 is.Equal(rec2[0].Value.(int), 3)127}128func TestCollection_TSLast(t *testing.T) {129 mgoSession = mongoDB.Session()130 defer mongoDB.Wipe()131 defer mgoSession.Close()132 is := is.New(t)133 s := NewSession(mgoSession)134 defer s.Close()135 tsmgoC, err := s.C(dbName, colName)136 is.NoErr(err) // s.C(dbName, colName)137 t1 := time.Now()138 t2 := t1.Add(10 * time.Second)139 res1, err := tsmgoC.Upsert(type1, TSRecord{t1, 1}, TSRecord{t2, 2})140 is.NoErr(err) // tsmgoC.TSUpsert(type1, TSRecord{t1, 1}, TSRecord{t2, 2}) error141 is.Equal(2, res1.Matched) // res1.Matched142 is.Equal(0, res1.Modified) // res1.Modified143 rec, err := tsmgoC.Last(type1)144 is.NoErr(err) // tsmgoC.Last(type1) error145 is.Equal(rec.Timestamp.Unix(), t2.In(time.UTC).Unix())146 is.Equal(rec.Value.(int), 2)147}148func TestCollection_Interval(t *testing.T) {149 mgoSession = mongoDB.Session()150 defer mongoDB.Wipe()151 defer mgoSession.Close()152 is := is.New(t)153 s := NewSession(mgoSession)154 defer s.Close()155 tsmgoC, err := s.C(dbName, colName)156 is.NoErr(err) // s.C(dbName, colName)157 t1 := time.Now()158 t2 := t1.Add(10 * time.Second)159 res1, err := tsmgoC.Upsert(type1, TSRecord{t1, 1}, TSRecord{t2, 2})160 is.NoErr(err) // tsmgoC.TSUpsert(type1, TSRecord{t1, 1}, TSRecord{t2, 2}) error161 is.Equal(2, res1.Matched) // res1.Matched162 is.Equal(0, res1.Modified) // res1.Modified163 rec, err := tsmgoC.Interval(type1, t1, t2)164 is.NoErr(err) // tsmgoC.Interval(t1, t2)165 is.Equal(rec[0].Timestamp.Unix(), t1.In(time.UTC).Unix())166 is.Equal(rec[0].Value.(int), 1)167 is.Equal(rec[1].Timestamp.Unix(), t2.In(time.UTC).Unix())168 is.Equal(rec[1].Value.(int), 2)169}...
session.go
Source:session.go
...77// Collection represents a timeseries collection in a mongo database.78type Collection struct {79 mgoCollection *mgo.Collection80}81// UpsertResult holds the results for a timeseries upsert operation.82type UpsertResult struct {83 Matched int84 Modified int85}86// Upsert bulk-inserts the given data into the timeseries database overriding the data if necessary.87func (c *Collection) Upsert(field string, val ...TSRecord) (UpsertResult, error) {88 switch len(val) {89 case 0:90 return UpsertResult{}, nil91 default:92 bulk := c.mgoCollection.Bulk()93 for _, v := range val {94 bulk.Upsert(95 bson.M{timestampIndexField: v.Timestamp, typeField: field},96 bson.M{97 timestampIndexField: v.Timestamp,98 typeField: field,99 valueField: v.Value,100 },101 )102 }103 br, err := bulk.Run()104 return UpsertResult{br.Matched, br.Modified}, err105 }106}107// Interval fetches all records from timeseries mongo within the specified (closed) interval.108// If no records are found, an empty slice is returned.109func (c *Collection) Interval(field string, start time.Time, finish time.Time) ([]TSRecord, error) {110 iter := c.mgoCollection.Find(111 bson.M{112 typeField: field,113 timestampIndexField: bson.M{114 "$gte": start,115 "$lte": finish,116 },117 }).Iter()118 var ret []TSRecord...
structure.go
Source:structure.go
...15 Insert(*InsertStruct) error16 InsertAsync(*InsertStruct, *Callback)17 Update(*UpdateStruct) error18 UpdateAsync(*UpdateStruct, *Callback)19 Upsert(*UpsertStruct) (*mgo.ChangeInfo, error)20 UpsertAsync(*UpsertStruct, *Callback)21 UpdateAll(*UpdateAllStruct) (*mgo.ChangeInfo, error)22 UpdateAllAsync(*UpdateAllStruct, *Callback)23 UpsertAll(*UpsertAllStruct) (*mgo.ChangeInfo, error)24 UpsertAllAsync(*UpsertAllStruct, *Callback)25 FindByID(*FindByIDStruct) (interface{}, error)26 FindByIDAsync(*FindByIDStruct, *Callback)27 Find(*FindStruct) ([]interface{}, error)28 FindAsync(*FindStruct, *Callback)29 FindAll(*FindAllStruct) ([]interface{}, error)30 FindAllAsync(*FindAllStruct, *Callback)31 Remove(*RemoveStruct) error32 RemoveAsync(*RemoveStruct, *Callback)33 RemoveAll(*RemoveAllStruct) (*mgo.ChangeInfo, error)34 RemoveAllAsync(*RemoveAllStruct, *Callback)35}36type Connection struct {37 Database string //database name38 DialInfo *mgo.DialInfo // connection info39 Session *mgo.Session //session info40 Collections map[string]*mgo.Collection //all collections41 Collection string //collection name42}43type Config struct {44 Uri string45 DbType string46 Hosts string //connection url i.e, localhost:2701747 Database string //database name48 ReplicaSetName string //database name49 Username string //username50 Password string //password51 AuthDatabase string //auth db52 Direct bool53}54type BulkInsertStruct struct {55 Config *Config56 Data []interface{}57}58type InsertStruct struct {59 Data interface{}60}61type UpdateStruct struct {62 Id string63 Data interface{}64}65type UpsertStruct struct {66 Id string67 Data interface{}68}69type UpdateAllStruct struct {70 Query bson.M71 Data interface{}72}73type UpsertAllStruct struct {74 Query bson.M75 Data interface{}76}77type FindByIDStruct struct {78 Id string79 Fields bson.M80}81type FindStruct struct {82 Query bson.M83 Options map[string]int84 Fields bson.M85}86type FindAllStruct struct {87 Fields bson.M...
Upsert
Using AI Code Generation
1import (2type Person struct {3}4func main() {5 if err != nil {6 panic(err)7 }8 defer session.Close()9 session.SetMode(mgo.Monotonic, true)10 c := session.DB("test").C("people")11 err = c.Insert(&Person{"Ale", "+55 53 8116 9639"},12 &Person{"Cla", "+55 53 8402 8510"})13 if err != nil {14 panic(err)15 }16 result := Person{}17 err = c.Find(bson.M{"name": "Ale"}).One(&result)18 if err != nil {19 panic(err)20 }21 fmt.Println("Phone:", result.Phone)22 err = c.Update(bson.M{"name": "Ale"}, &Person{"Ale", "+55 53 8116 9639"})23 if err != nil {24 panic(err)25 }26 err = c.Find(bson.M{"name": "Ale"}).One(&result)27 if err != nil {28 panic(err)29 }30 fmt.Println("Phone:", result.Phone)31 _, err = c.Upsert(bson.M{"name": "Ale"}, &Person{"Ale", "+55 53 8116 9639"})32 if err != nil {33 panic(err)34 }35 _, err = c.Upsert(bson.M{"name": "Ale"}, &Person{"Ale", "+55 53 8116 9639"})36 if err != nil {37 panic(err)38 }39 _, err = c.Upsert(bson.M{"name": "Cla"}, &Person{"Cla", "+55 53 8402 8510"})40 if err != nil {41 panic(err)42 }43 _, err = c.Upsert(bson.M{"name": "Cla"}, &Person{"Cla", "+55 53 8402 8510"})44 if err != nil {45 panic(err)46 }47 _, err = c.Upsert(bson.M{"name": "Cla"}, &Person{"Cla", "+55 53 8402 851
Upsert
Using AI Code Generation
1import (2func main() {3 session, err := mgo.Dial("localhost")4 if err != nil {5 panic(err)6 }7 session.SetMode(mgo.Monotonic, true)8 c := session.DB("test").C("people")9 err = c.Upsert(bson.M{"name": "Ale"}, bson.M{"$set": bson.M{"phone": "+55 53 8116 9639"}})10 err = c.Upsert(bson.M{"name": "Cla"}, bson.M{"$set": bson.M{"phone": "+55 53 8402 8510"}})11 result := Result{}12 err = c.Find(bson.M{"name": "Ale"}).One(&result)13 if err != nil {14 panic(err)15 }16 fmt.Println("Phone:", result.Phone)17}18type Result struct {19}
Upsert
Using AI Code Generation
1import (2type Person struct {3}4func main() {5 session, err := mgo.Dial("localhost")6 if err != nil {7 panic(err)8 }9 defer session.Close()10 session.SetMode(mgo.Monotonic, true)11 c := session.DB("test").C("people")12 err = c.Insert(&Person{"Ale", "+55 53 8116 9639"},13 &Person{"Cla", "+55 53 8402 8510"})14 if err != nil {15 log.Fatal(err)16 }17 result := Person{}18 err = c.Find(bson.M{"name": "Ale"}).One(&result)19 if err != nil {20 log.Fatal(err)21 }22 fmt.Println("Phone:", result.Phone)23 err = c.Update(bson.M{"name": "Ale"}, &Person{"Ale", "+55 53 8116 9639"})24 if err != nil {25 log.Fatal(err)26 }27 change := mgo.Change{28 Update: bson.M{"$set": bson.M{"phone": "+55 53 8116 9639"}},29 }30 info, err := c.Find(bson.M{"name": "Ale"}).Apply(change, &result)31 if err != nil {32 panic(err)33 }34 fmt.Println("Upserted:", info.UpsertedId)35 fmt.Println("Phone:", result.Phone)36 err = c.Remove(bson.M{"name": "Ale"})37 if err != nil {38 log.Fatal(err)39 }40 err = c.RemoveId(bson.ObjectIdHex("4e6b9d9e4b6e0fbc42000001"))41 if err != nil {42 log.Fatal(err)43 }44}
Upsert
Using AI Code Generation
1import (2type Person struct {3}4func main() {5 session, err := mgo.Dial("localhost")6 if err != nil {7 panic(err)8 }9 defer session.Close()10 c := session.DB("test").C("people")11 err = c.Insert(&Person{"Ale", 20}, &Person{"Cla", 25})12 if err != nil {13 panic(err)14 }15 err = c.Upsert(bson.M{"name": "Ale"}, &Person{"Ale", 30})16 if err != nil {17 panic(err)18 }19 result := Person{}20 err = c.Find(bson.M{"name": "Ale"}).One(&result)21 if err != nil {22 panic(err)23 }24 fmt.Println("Phone", result.Age)25}
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!