在 Go 语言中,调用 MongoDB 通常涉及使用 MongoDB Go 驱动来执行数据库操作。

在 Go 语言中,调用 MongoDB 通常涉及使用 MongoDB Go 驱动来执行数据库操作。

在 Go 语言中,调用 MongoDB 通常涉及使用 MongoDB Go 驱动来执行数据库操作。以下是一个完整的示例代码,展示如何连接到 MongoDB 数据库、插入文档、查询文档以及关闭连接。

示例代码

go

package main import ( "" "fmt" "log" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options") func main() { // 设置 MongoDB 客户端选项 clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") // 连接到 MongoDB client, err := mongo.Connect(context.TODO(), clientOptions) if err != nil { log.Fatal(err) } defer func() { if err = client.Disconnect(context.TODO()); err != nil { log.Fatal(err) } }() // 检查连接 ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() err = client.Ping(ctx, nil) if err != nil { log.Fatal(err) } fmt.Println("Connected to MongoDB!") // 选择数据库和集合 database := client.Database("testdb") collection := database.Collection("testcollection") // 插入文档 insertResult, err := collection.InsertOne(ctx, bson.D{ {Key: "name", Value: "Alice"}, {Key: "age", Value: 30}, {Key: "city", Value: "New York"}, }) if err != nil { log.Fatal(err) } fmt.Println("Inserted document ID:", insertResult.InsertedID) // 查询文档 var result bson.M err = collection.FindOne(ctx, bson.D{{Key: "name", Value: "Alice"}}).Decode(&result) if err != nil { log.Fatal(err) } fmt.Println("Found document:", result) // 示例:插入多个文档(可选) // insertManyResult, err := collection.InsertMany(ctx, []interface{}{ // bson.D{{Key: "name", Value: "Bob"}, {Key: "age", Value: 25}, {Key: "city", Value: "Los Angeles"}}, // bson.D{{Key: "name", Value: "Charlie"}, {Key: "age", Value: 35}, {Key: "city", Value: "Chicago"}}, // }) // if err != nil { // log.Fatal(err) // } // fmt.Println("Inserted multiple document IDs:", insertManyResult.InsertedIDs)}

代码说明

jrhz.info
  1. 连接到 MongoDB
  • 使用 mongo.Connect 连接到 MongoDB 服务器。
  • 使用 client.Ping 检查连接是否成功。
  1. 选择数据库和集合
  • 使用 client.Database("testdb") 选择数据库。
  • 使用 database.Collection("testcollection") 选择集合。
  1. 插入文档
  • 使用 collection.InsertOne 插入一个文档。
  • 文档以 bson.D 格式表示,bson.D 是一个有序的键值对列表。
  1. 查询文档
  • 使用 collection.FindOne 查询单个文档。
  • 使用 Decode 方法将查询结果解码为 bson.M 类型。
  1. 上下文管理
  • 使用 context.WithTimeout 创建带有超时的上下文,以防止操作挂起。
  1. 关闭连接
  • 使用 client.Disconnect 在程序结束时关闭与 MongoDB 的连接。

运行代码

  1. 确保 MongoDB 服务器正在运行
  • 默认情况下,代码连接到 mongodb://localhost:27017。
  • 如果 MongoDB 运行在其他地址或端口,请修改 ApplyURI 中的 URI。
  1. 运行代码
  2. bash
  3. go run main.go
  4. 查看输出
  • 如果连接成功,将输出 Connected to MongoDB!。
  • 如果插入和查询成功,将输出插入的文档 ID 和查询结果。

注意事项

  • MongoDB 版本:确保 MongoDB 服务器版本为 2.6 或更高。
  • Go 版本:建议使用 Go 1.13 或更高版本。
  • 依赖管理:确保已安装 MongoDB Go 驱动,可以通过 go get go.mongodb.org/mongo-driver/mongo 安装。

通过这个示例,您可以了解如何在 Go 中使用 MongoDB Go 驱动进行基本的数据库操作,包括连接、插入和查询文档。

特别声明:[在 Go 语言中,调用 MongoDB 通常涉及使用 MongoDB Go 驱动来执行数据库操作。] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

网红罗大美工作室已退租 家属坚定讨公道(罗大美真名叫什么)

拥有百万粉丝的反串网红“罗大美”被害案,将于7月29日在河南省南阳市中级人民法院一审二次开庭。此次庭审将结合退补侦查新证据进行质证

网红罗大美工作室已退租 家属坚定讨公道(罗大美真名叫什么)

快递盒造望远镜?40元看月球!这届网友把天文玩出花了!(望远镜可以发快递吗)

"从"不可能"到"真香"的科学逆袭在湖北某大学宿舍里,文科生小党用快递盒、旧镜片和胶带,花了不到两天时间就组装出一台简易望远镜。这个初中生用早餐钱省下

快递盒造望远镜?40元看月球!这届网友把天文玩出花了!(望远镜可以发快递吗)

iPhone 17 Pro电池曝光:美版和国行版不一样(iphone17pro电池多少毫安)

8月2日消息,博主Majin Bu在社交平台上晒出了iPhone17Pro的全新电池。如图所示,iPhone17Pro采用L型电池,电池外表使用钢制外壳,以此来提高散热效率。 值得注意的是,美版iPhone…

iPhone 17 Pro电池曝光:美版和国行版不一样(iphone17pro电池多少毫安)

景区游客坠崖身亡:坐栏杆上不慎后仰 多部门介入调查(景区游客坠崖身亡案例)

8月2日,辽宁丹东市凤城市凤凰山景区一名游客从山上坠落并被送往医院。次日,景区及文旅部门表示,多部门已介入调查。据景区回应,该游客当时坐在栏杆上,不慎后仰坠落。不幸的是,这名游客最终身亡。目前,景区正常开放,相关善后事宜仍在处理中

景区游客坠崖身亡:坐栏杆上不慎后仰 多部门介入调查(景区游客坠崖身亡案例)

北京延庆发布积水内涝红色预警 暴雨来袭注意防范(延庆 发展)

2025年8月3日16时,延庆区水务局与延庆区气象局联合升级发布了城市积水内涝红色风险预警。预警指出,从当天18时至次日8时,延庆区大部分地区小时雨强可达30毫米以上,部分地区甚至可能达到50毫米以上

北京延庆发布积水内涝红色预警 暴雨来袭注意防范(延庆 发展)