题记
本文主要是记录mongodb的安装和使用。
mongodb安装
本文主要介绍在macos系统下用docker安装mongodb。首先拉取对应的mongodb镜像
1
| docker pull mongo:latest
|
然后跑起来对应的容器
1 2 3 4 5 6
| docker run -itd --name mongo //容器名 -p 27017:27017 //暴露端口 -e MONGO_INITDB_ROOT_USERNAME=root //用户名 -e MONGO_INITDB_ROOT_PASSWORD=123456 //密码 mongo //镜像名
|
最后在navicat上连接
Go使用mongodb
安装 Go 的 MongoDB 驱动程序:
1
| go get go.mongodb.org/mongo-driver/mongo
|
使用Go连接mongo:
1 2 3 4 5 6 7 8 9 10 11 12
| func main() { clientOptions := options.Client().ApplyURI("mongodb://root:123456@localhost:27017") client, err := mongo.Connect(context.Background(), clientOptions) if err != nil { panic(err.Error()) } err = client.Ping(context.TODO(), nil) if err != nil { return } defer client.Disconnect(context.Background()) }
|
创建记录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| type User struct { Name string `bson:"name"` Age int `bson:"age"` }
func main() { clientOptions := options.Client().ApplyURI("mongodb://root:123456@localhost:27017") client, err := mongo.Connect(context.Background(), clientOptions) if err != nil { panic(err.Error()) } err = client.Ping(context.TODO(), nil) if err != nil { return }
collection := client.Database("test").Collection("users") user := User{ Name: "ZhiYuan", Age: 22, } res, err := collection.InsertOne(context.TODO(), user) if err != nil { panic(err.Error()) } fmt.Println(res.InsertedID) defer client.Disconnect(context.Background()) }
|
读取记录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| collection := client.Database("test").Collection("users") cursor, err := collection.Find(context.Background(), bson.D{}) if err != nil { panic(err.Error()) } defer cursor.Close(context.Background())
var users []User if err := cursor.All(context.Background(), &users); err != nil { panic(err.Error()) } for _, user := range users { fmt.Printf("Name: %s, Age: %d\n", user.Name, user.Age) }
|
更新记录:
1 2 3 4 5 6 7
| collection := client.Database("test").Collection("users") filter := bson.M{"name": "ZhiYuan"} update := bson.M{"$set": bson.M{"age": 23}} _, err = collection.UpdateOne(context.TODO(), filter, update) if err != nil { panic(err.Error()) }
|
删除记录:
1 2 3 4 5 6
| collection := client.Database("test").Collection("users") filter := bson.M{"name": "Test"} _, err = collection.DeleteOne(context.Background(), filter) if err != nil { panic(err.Error()) }
|
mongodb文档手册
MongoDB Go Driver