共计 3214 个字符,预计需要花费 9 分钟才能阅读完成。
自动写代码机器人,免费开通
如何在 mongodb 中使用 golang 驱动?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
使用教程如下:
导入
go get github.com/mongodb/mongo-go-driver/mongo
链接 mongo 服务
if client, err = mongo.Connect(getContext(), url); err != nil { checkErr(err)
}
判断服务是否可用
if err = client.Ping(getContext(), readpref.Primary()); err != nil { checkErr(err)
}
选择数据库和集合
collection = client.Database(testing_base).Collection(howie)
删除这个集合
collection.Drop(getContext())
插入一条数据
if insertOneRes, err = collection.InsertOne(getContext(), howieArray[0]); err != nil { checkErr(err)
}
fmt.Printf(InsertOne 插入的消息 ID:%v\n , insertOneRes.InsertedID)
批量插入数据
if insertManyRes, err = collection.InsertMany(getContext(), howieArray); err != nil { checkErr(err)
}
fmt.Printf(InsertMany 插入的消息 ID:%v\n , insertManyRes.InsertedIDs)
查询单条数据
if err = collection.FindOne(getContext(), bson.D{{name , howie_2}, {age , 11}}).Decode(howie); err != nil { checkErr(err)
}
fmt.Printf(FindOne 查询到的数据:%v\n , howie)
查询单条数据后删除该数据
if err = collection.FindOneAndDelete(getContext(), bson.D{{name , howie_3}}).Decode(howie); err != nil { checkErr(err)
}
fmt.Printf(FindOneAndDelete 查询到的数据:%v\n , howie)
询单条数据后修改该数据
if err = collection.FindOneAndUpdate(getContext(), bson.D{{name , howie_4}}, bson.M{$set : bson.M{ name : 这条数据我需要修改了}}).Decode(howie); err != nil { checkErr(err)
}
fmt.Printf(FindOneAndUpdate 查询到的数据:%v\n , howie)
查询单条数据后替换该数据 (以前的数据全部清空)
if err = collection.FindOneAndReplace(getContext(), bson.D{{name , howie_5}}, bson.M{hero : 这条数据我替换了}).Decode(howie); err != nil { checkErr(err)
}
fmt.Printf(FindOneAndReplace 查询到的数据:%v\n , howie)
一次查询多条数据 (查询 createtime =3, 限制取 2 条,createtime 从大到小排序的数据)
if cursor, err = collection.Find(getContext(), bson.M{createtime : bson.M{ $gte : 2}}, options.Find().SetLimit(2), options.Find().SetSort(bson.M{ createtime : -1})); err != nil { checkErr(err)
}
if err = cursor.Err(); err != nil { checkErr(err)
}
defer cursor.Close(context.Background())
for cursor.Next(context.Background()) { if err = cursor.Decode( howie); err != nil { checkErr(err)
}
howieArrayEmpty = append(howieArrayEmpty, howie)
}
fmt.Printf(Find 查询到的数据:%v\n , howieArrayEmpty)
查询集合里面有多少数据
if size, err = collection.Count(getContext(), nil); err != nil { checkErr(err)
}
fmt.Printf(Count 里面有多少条数据:%d\n , size)
查询集合里面有多少数据 (查询 createtime = 3 的数据)
if size, err = collection.Count(getContext(), bson.M{createtime : bson.M{ $gte : 3}}); err != nil { checkErr(err)
}
fmt.Printf(Count 里面有多少条数据:%d\n , size)
修改一条数据
if updateRes, err = collection.UpdateOne(getContext(), bson.M{name : howie_2}, bson.M{$set : bson.M{ name : 我要改了他的名字}}); err != nil { checkErr(err)
}
fmt.Printf(UpdateOne 的数据:%d\n , updateRes)
修改多条数据
if updateRes, err = collection.UpdateMany(getContext(), bson.M{createtime : bson.M{ $gte : 3}}, bson.M{$set : bson.M{ name : 我要批量改了他的名字}}); err != nil { checkErr(err)
}
fmt.Printf(UpdateMany 的数据:%d\n , updateRes)
删除一条数据
if delRes, err = collection.DeleteOne(getContext(), bson.M{name : howie_1}); err != nil { checkErr(err)
}
fmt.Printf(DeleteOne 删除了多少条数据:%d\n , delRes.DeletedCount)
删除多条数据
if delRes, err = collection.DeleteMany(getContext(), bson.M{createtime : bson.M{ $gte : 7}}); err != nil { checkErr(err)
}
fmt.Printf(DeleteMany 删除了多少条数据:%d\n , delRes.DeletedCount)
看完上述内容,你们掌握如何在 mongodb 中使用 golang 驱动的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!
向 AI 问一下细节
正文完
发表至: 数据库
2023-12-04