mongodb学习

Olivia的小跟班 Lv4

题记

​ 本文主要是记录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上连接

QQ_1731508231711

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")//MongoDB 服务器的 URI
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") //test是数据库,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") //test是数据库,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)
}

//读取一条记录
/*
collection := client.Database("test").Collection("users") //test是数据库,users是集合
filter := bson.M{"name": "Olivia"}
res := collection.FindOne(context.Background(), filter)
var user = &User{}
err = res.Decode(&user)
if err != nil {
return
}
fmt.Printf("Name: %s, Age: %d\n", user.Name, user.Age)
*/

更新记录:

1
2
3
4
5
6
7
collection := client.Database("test").Collection("users") //test是数据库,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") //test是数据库,users是集合
filter := bson.M{"name": "Test"}
_, err = collection.DeleteOne(context.Background(), filter)
if err != nil {
panic(err.Error())
}

mongodb文档手册

MongoDB Go Driver

  • 标题: mongodb学习
  • 作者: Olivia的小跟班
  • 创建于 : 2024-11-13 22:29:44
  • 更新于 : 2024-11-13 22:30:48
  • 链接: https://www.youandgentleness.cn/2024/11/13/mongodb学习/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论