UPD: рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ! MongoDB рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдереЛрдбрд╝реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рд╕реНрд╡рдпрдВ рд╕рд╛рдордЧреНрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдзрд┐рдХрд╛рд░рд┐рдХ mongoDB рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдпрд╣ рдЕрдиреБрд╡рд╛рдж рд▓реЗрдЦ рд╕реЗ рдЕрд▓рдЧ рд╣реИ)ред
рдпрд╣рд╛рдБ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛:
- рдореЛрдВрдЧреЛ-рдЧреЛ-рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
- рдореЛрдВрдЧреЛ-рдЧреЛ-рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЛрдВрдЧреЛрдбреАрдмреА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
- BSON рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- CRUD рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдореВрд▓ рдХреЛрдб рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдЧрд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдиреЗ MongoDB рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 2.6 рдФрд░ рдЧреЛрд▓рдВрдЧ 1.10 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдХрдо рдирд╣реАрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред
рдореЛрдВрдЧреЛ-рдЧреЛ-рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдореЙрдбреНрдпреВрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ):
dep ensure -add "go.mongodb.org/mongo-driver/mongo@~1.0.0"
рдиреАрдВрд╡ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде main.go рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:
package main import ( "context" "fmt" "log" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/readpref" )
рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдо рдореЛрдВрдЧреЛ-рдЧреЛ-рдбреНрд░рд╛рдЗрд╡рд░, рдХреБрдЫ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЯреНрд░реЗрдирд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
Mongo-go-driver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ mongoDB рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
рдЬрдм рд╣рдордиреЗ mongo-go-driver рдХреЛ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд┐рдпрд╛, рддреЛ рд╣рдореЗрдВ mongo.NewClient () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ mongoDB рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ рдФрд░ рдореЛрдВрдЧреЛрдбрдм рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдкрддреЗ рд╡рд╛рд▓реЗ рд▓рд╛рдЗрди рдХрд╛ рддрд░реНрдХ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рд╣рдо рд╡рд┐рдХрд▓реНрдк рдХреЛ рднреА рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редientOptions рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдареАрдХ-рдареАрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВред
рдкреНрд░рд▓реЗрдЦрди рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реИред
рдЪрд▓рд┐рдП рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
MongoDB рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬреБрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рд╢рд┐рдХреНрд╖рдХреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рдХрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
collection := client.Database("test").Collection("trainers")
рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдХрдиреЗрдХреНрд╢рди рдХреЛ mongoDB рдХреЗ рд╕рд╛рде рдЦреБрд▓рд╛ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рдмрдВрдж рди рдХрд░рдирд╛ рдкрдбрд╝реЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдм рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ () рдлрд╝рдВрдХреНрд╢рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
err = client.Disconnect(context.TODO()) if err != nil { log.Fatal(err) } fmt.Println("Connection to MongoDB closed.")
рдЕрдкреНрд░рдпреБрдХреНрдд рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред
MongoDB рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдХреЛрдб ( go run main.go ) рдЪрд▓рд╛рдПрдВред
BSON рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
MSONoDB рдореЗрдВ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдПрдХ рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ BSON рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рд╕рдореЗрдВ JSON рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, BSON рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдирдП рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреИрд╕реЗ int , long , date , float рдФрд░ рджрд╢рдорд▓рд╡128 ред
рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдЫрдВрдЯрд╛рдИ рдФрд░ рддреБрд▓рдирд╛ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред Go рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ BSON рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд╛рд░ рд╣реИрдВ: D рдкреНрд░рдХрд╛рд░ рдФрд░ RAW рдкреНрд░рдХрд╛рд░ред
рдкрд░рд┐рд╡рд╛рд░ рдбреА рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:
- D : BSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдСрд░реНрдбрд░ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MongoDB рдХрдорд╛рдВрдбред
- рдПрдо : рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╢рдмреНрджрдХреЛрд╢ (рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА, рдирдХреНрд╢рд╛)ред рдпрд╣ рдбреА рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдЖрджреЗрд╢ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
- рдПрдХ : BSON рд╕рд░рдгреАред
- рдИ : рдбреА рдХреЗ рдЕрдВрджрд░ рдПрдХрд▓ рддрддреНрд╡ ред
рдпрд╣рд╛рдВ рдбреА-рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЙрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдирд╛рдо рдлрд╝реАрд▓реНрдб рдРрд▓рд┐рд╕ рдпрд╛ рдмреЙрдм рдХреЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ:
рдХрдЪреНрдЪреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдЗрдЯ рдЯреБрдХрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рд▓реБрдХрдЕрдк () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЙ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдПрдХрд▓ рддрддреНрд╡ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ BSON рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдбреА-рдЯрд╛рдЗрдк рдкрд░рд┐рд╡рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
CRUD рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬреБрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╡реЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╢реНрди рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХрд╛ рд╕рдореНрдорд┐рд▓рди (рдирд┐рд░реНрдорд╛рдг)
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирдИ рдЯреНрд░реЗрдирд░ рд╕рдВрд░рдЪрдирд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
ash := Trainer{"Ash", 10, "Pallet Town"} misty := Trainer{"Misty", 10, "Cerulean City"} brock := Trainer{"Brock", 15, "Pewter City"}
рдХрд┐рд╕реА рдПрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред InsertOne () рд╡рд┐рдзрд┐:
insertResult, err := collection.InsertOne(context.TODO(), ash) if err != nil { log.Fatal(err) } fmt.Println("Inserted a single document: ", insertResult.InsertedID)
рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ ред InertMany () рд╡рд┐рдзрд┐ рдореМрдЬреВрдж рд╣реИ:
trainers := []interface{}{misty, brock} insertManyResult, err := collection.InsertMany(context.TODO(), trainers) if err != nil { log.Fatal(err) } fmt.Println("Inserted multiple documents: ", insertManyResult.InsertedIDs)
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрджреНрдпрддрди
рд╕рдВрдЧреНрд░рд╣ . UpdateOne () рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдЕрдкрдбреЗрдЯ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдЙрдиреНрд╣реЗрдВ bson.D рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
filter := bson.D{{"name", "Ash"}} update := bson.D{ {"$inc", bson.D{ {"age", 1}, }}, }
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд┐рд▓реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдирд╛рдо рдлрд╝реАрд▓реНрдб рдРрд╢ рдХреЗ рдореВрд▓реНрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдФрд░ 1 рд╕реЗ рдЙрдореНрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред
updateResult, err := collection.UpdateOne(context.TODO(), filter, update) if err != nil { log.Fatal(err) } fmt.Printf("Matched %v documents and updated %v documents.\n", updateResult.MatchedCount, updateResult.ModifiedCount)
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрдЬ
рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╕рд╛рде рд╣реА рдПрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдПрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ редindOne () ред рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдПрдХрд▓ рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдЪрд░ рдореЗрдВ рдбреАрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдЙрд╕реА рдлрд╝рд┐рд▓реНрдЯрд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрджреНрдпрддрди рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рд┐рдВрдж () ред
рдпрд╣ рд╡рд┐рдзрд┐ Cursor рд▓реМрдЯрд╛рддреА рд╣реИред Cursor рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рдбреАрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм рдХрд░реНрд╕рд░ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ , рддреЛ рдЖрдкрдХреЛ рдХрд░реНрд╕рд░ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╡рд┐рдХрд▓реНрдк рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░реНрд╕рд░ рдХреЛ рдлрд╛рдЗрди-рдЯреНрдпреВрди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рджреЛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рд╣реИред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣рдЯрд╛рдПрдБ
рдЖрдк collection.DeleteOne () рдпрд╛ collection.DeleteMany () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдлрд╝рд┐рд▓реНрдЯрд░ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдЖрдИрдПрд▓ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред рдЖрдк рд╕рдВрдкреВрд░реНрдг рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП collection.Drop () рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
filter := bson.M{} deleteResult, err := collection.DeleteMany(context.TODO(), filter) if err != nil { log.Fatal(err) } fmt.Printf("Deleted %v documents in the trainers collection\n", deleteResult.DeletedCount)
рдЖрдЧреЗ рдХреЗ рдХрджрдо
тЖТ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рдХреЛрдб GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИ
тЖТ GoDoc рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд░рд▓реЗрдЦрди
рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдорд╕реЗ Google рд╕рдореВрд╣ mongo-go-driver рдореЗрдВ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред
рдХреГрдкрдпрд╛ MongoDB JIRA рдХреЛ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬреЗрдВред
рд╣рдореЗрдВ Go Driver рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред