成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 利用golang驅(qū)動操作MongoDB數(shù)據(jù)庫的步驟

利用golang驅(qū)動操作MongoDB數(shù)據(jù)庫的步驟

熱門標簽:河南電話外呼系統(tǒng)招商 外呼線路資源屬于電信業(yè)務(wù)嗎 智能外呼系統(tǒng)官網(wǎng) 青白江400企業(yè)電話申請 crm外呼系統(tǒng)聯(lián)系方式 內(nèi)蒙古營銷智能外呼系統(tǒng)哪個好 長沙電銷外呼防封卡是什么 呼和浩特外呼系統(tǒng)原理是什么 小裙科技電銷機器人怎樣

安裝MongoDB驅(qū)動程序

mkdr mongodb 
cd mongodb 
go mod init 
go get go.mongodb.org/mongo-driver/mongo

連接MongoDB

創(chuàng)建一個main.go文件

將以下包導(dǎo)入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"
 "time"
)

連接MongoDB的URI格式為

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

單機版

mongodb://localhost:27017

副本集

mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017 /?replicaSet = myRepl

分片集群

mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017

mongo.Connect()接受Context和options.ClientOptions對象,該對象用于設(shè)置連接字符串和其他驅(qū)動程序設(shè)置。
通過context.TODO()表示不確定現(xiàn)在使用哪種上下文,但是會在將來添加一個

使用Ping方法來檢測是否已正常連接MongoDB

func main() {
 clientOptions := options.Client().ApplyURI("mongodb://admin:password@localhost:27017")
 var ctx = context.TODO()
 // Connect to MongoDB
 client, err := mongo.Connect(ctx, clientOptions)
 if err != nil {
 log.Fatal(err)
 }
 // Check the connection
 err = client.Ping(ctx, nil)
 if err != nil {
 log.Fatal(err)
 }
 fmt.Println("Connected to MongoDB!")
 defer client.Disconnect(ctx)

列出所有數(shù)據(jù)庫

databases, err := client.ListDatabaseNames(ctx, bson.M{})
if err != nil {
 log.Fatal(err)
}
fmt.Println(databases)

在GO中使用BSON對象

MongoDB中的JSON文檔以稱為BSON(二進制編碼的JSON)的二進制表示形式存儲。與其他將JSON數(shù)據(jù)存儲為簡單字符串和數(shù)字的數(shù)據(jù)庫不同,BSON編碼擴展了JSON表示形式,例如int,long,date,float point和decimal128。這使應(yīng)用程序更容易可靠地處理,排序和比較數(shù)據(jù)。Go Driver有兩種系列用于表示BSON數(shù)據(jù):D系列類型和Raw系列類型。

D系列包括四種類型:

  • D:BSON文檔。此類型應(yīng)用在順序很重要的場景下,例如MongoDB命令。
  • M:無序map。除不保留順序外,與D相同。
  • A:一個BSON數(shù)組。
  • E:D中的單個元素。

插入數(shù)據(jù)到MongoDB

插入單條文檔

//定義插入數(shù)據(jù)的結(jié)構(gòu)體
type sunshareboy struct {
Name string
Age int
City string
}
//連接到test庫的sunshare集合,集合不存在會自動創(chuàng)建
collection := client.Database("test").Collection("sunshare")
wanger:=sunshareboy{"wanger",24,"北京"}
insertOne,err :=collection.InsertOne(ctx,wanger)
if err != nil {
log.Fatal(err)
}
fmt.Println("Inserted a Single Document: ", insertOne.InsertedID)

執(zhí)行結(jié)果如下 

![](https://s4.51cto.com/images/blog/202011/07/378adacb26314b3532fa8947e3516fc1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
#### 同時插入多條文檔
```go
collection := client.Database("test").Collection("sunshare")
dongdong:=sunshareboy{"張冬冬",29,"成都"}
huazai:=sunshareboy{"華仔",28,"深圳"}
suxin:=sunshareboy{"素心",24,"甘肅"}
god:=sunshareboy{"劉大仙",24,"杭州"}
qiaoke:=sunshareboy{"喬克",29,"重慶"}
jiang:=sunshareboy{"姜總",24,"上海"}
//插入多條數(shù)據(jù)要用到切片
boys:=[]interface{}{dongdong,huazai,suxin,god,qiaoke,jiang}
insertMany,err:= collection.InsertMany(ctx,boys)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Inserted multiple documents: ", insertMany.InsertedIDs)

從MongDB中查詢數(shù)據(jù)

查詢單個文檔

查詢單個文檔使用collection.FindOne()函數(shù),需要一個filter文檔和一個可以將結(jié)果解碼為其值的指針

var result sunshareboy
filter := bson.D{{"name","wanger"}}
err = collection.FindOne(context.TODO(), filter).Decode(result)
if err != nil {
 log.Fatal(err)
}
fmt.Printf("Found a single document: %+v\n", result)

返回結(jié)果如下

Connected to MongoDB!
Found a single document: {Name:wanger Age:24 City:北京}
Connection to MongoDB closed.

查詢多個文檔

查詢多個文檔使用collection.Find()函數(shù),這個函數(shù)會返回一個游標,可以通過他來迭代并解碼文檔,當?shù)瓿珊?,關(guān)閉游標

  • Find函數(shù)執(zhí)行find命令并在集合中的匹配文檔上返回Cursor。
  • filter參數(shù)必須是包含查詢運算符的文檔,并且可以用于選擇結(jié)果中包括哪些文檔。不能為零??瘴臋n(例如bson.D {})應(yīng)用于包含所有文檔。
  • opts參數(shù)可用于指定操作的選項,例如我們可以設(shè)置只返回五條文檔的限制(https://godoc.org/go.mongodb.org/mongo-driver/mongo/options#Find)。
//定義返回文檔數(shù)量
findOptions := options.Find()
findOptions.SetLimit(5)

//定義一個切片存儲結(jié)果
var results []*sunshareboy

//將bson.D{{}}作為一個filter來匹配所有文檔
cur, err := collection.Find(context.TODO(), bson.D{{}}, findOptions)
if err != nil {
 log.Fatal(err)
}
//查找多個文檔返回一個游標
//遍歷游標一次解碼一個游標
for cur.Next(context.TODO()) {
 //定義一個文檔,將單個文檔解碼為result
 var result sunshareboy
 err := cur.Decode(result)
 if err != nil {
  log.Fatal(err)
 }
 results = append(results, result)
}
fmt.Println(result)
if err := cur.Err(); err != nil {
 log.Fatal(err)
}
//遍歷結(jié)束后關(guān)閉游標
cur.Close(context.TODO())
fmt.Printf("Found multiple documents (array of pointers): %+v\n", results)

返回結(jié)果如下

Connected to MongoDB!
{wanger 24 北京}
{張冬冬 29 成都}
{華仔 28 深圳}
{素心 24 甘肅}
{劉大仙 24 杭州}
Found multiple documents (array of pointers): [0xc000266450 0xc000266510 0xc000266570 0xc0002665d0 0xc000266630]
Connection to MongoDB closed.

更新MongoDB文檔

更新單個文檔

更新單個文檔使用collection.UpdateOne()函數(shù),需要一個filter來匹配數(shù)據(jù)庫中的文檔,還需要使用一個update文檔來更新操作

  • filter參數(shù)必須是包含查詢運算符的文檔,并且可以用于選擇要更新的文檔。不能為零。如果過濾器不匹配任何文檔,則操作將成功,并且將返回MatchCount為0的UpdateResult。如果過濾器匹配多個文檔,將從匹配的集合中選擇一個,并且MatchedCount等于1。
  • update參數(shù)必須是包含更新運算符的文檔(https://docs.mongodb.com/manual/reference/operator/update/),并且可以用于指定要對所選文檔進行的修改。它不能為nil或為空。
  • opts參數(shù)可用于指定操作的選項。
filter := bson.D{{"name","張冬冬"}}
//如果過濾的文檔不存在,則插入新的文檔
opts := options.Update().SetUpsert(true)
update := bson.D{
{"$set", bson.D{
 {"city", "北京"}},
}}
result, err := collection.UpdateOne(context.TODO(), filter, update,opts)
if err != nil {
log.Fatal(err)
}
if result.MatchedCount != 0 {
fmt.Printf("Matched %v documents and updated %v documents.\n", result.MatchedCount, result.ModifiedCount)
}
if result.UpsertedCount != 0 {
fmt.Printf("inserted a new document with ID %v\n", result.UpsertedID)
}

返回結(jié)果如下

Connected to MongoDB!
Matched 1 documents and updated 1 documents.
Connection to MongoDB closed.

更新多個文檔

更新多個文檔使用collection.UpdateOne()函數(shù),參數(shù)與collection.UpdateOne()函數(shù)相同

filter := bson.D{{"city","北京"}}
//如果過濾的文檔不存在,則插入新的文檔
opts := options.Update().SetUpsert(true)
update := bson.D{
{"$set", bson.D{
 {"city", "鐵嶺"}},
}}
result, err := collection.UpdateMany(context.TODO(), filter, update,opts)
if err != nil {
log.Fatal(err)
}
if result.MatchedCount != 0 {
fmt.Printf("Matched %v documents and updated %v documents.\n", result.MatchedCount, result.ModifiedCount)
}
if result.UpsertedCount != 0 {
fmt.Printf("inserted a new document with ID %v\n", result.UpsertedID)
}

返回結(jié)果如下

Connected to MongoDB!
Matched 2 documents and updated 2 documents.
Connection to MongoDB closed.

刪除MongoDB文檔

可以使用collection.DeleteOne()或collection.DeleteMany()刪除文檔。如果你傳遞bson.D{{}}作為過濾器參數(shù),它將匹配數(shù)據(jù)集中的所有文檔。還可以使用collection. drop()刪除整個數(shù)據(jù)集。

filter := bson.D{{"city","鐵嶺"}}
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)

返回結(jié)果如下

Connected to MongoDB!
Deleted 2 documents in the trainers collection
Connection to MongoDB closed.

獲取MongoDB服務(wù)狀態(tài)

上面我們介紹了對MongoDB的CRUD,其實還支持很多對mongoDB的操作,例如聚合、事物等,接下來介紹一下使用golang獲取MongoDB服務(wù)狀態(tài),執(zhí)行后會返回一個bson.Raw類型的數(shù)據(jù)

ctx, _ = context.WithTimeout(context.Background(), 30*time.Second)
serverStatus, err := client.Database("admin").RunCommand(
ctx,
bsonx.Doc{{"serverStatus", bsonx.Int32(1)}},
).DecodeBytes()
if err != nil {
fmt.Println(err)
}
fmt.Println(serverStatus)
fmt.Println(reflect.TypeOf(serverStatus))
version, err := serverStatus.LookupErr("version")
fmt.Println(version.StringValue())
if err != nil {
fmt.Println(err)
}

參考鏈接

  • https://www.mongodb.com/blog/post/mongodb-go-driver-tutorial
  • https://godoc.org/go.mongodb.org/mongo-driver/mongo

到此這篇關(guān)于利用golang驅(qū)動操作MongoDB數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)golang驅(qū)動操作MongoDB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python連接mongodb數(shù)據(jù)庫操作數(shù)據(jù)示例
  • 詳解linux 使用docker安裝mongodb方法
  • Pycharm連接MongoDB數(shù)據(jù)庫安裝教程詳解
  • SpringBoot整合MongoDB的示例
  • SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟
  • Spring Boot 整合 MongoDB的示例
  • ubuntu安裝mongodb創(chuàng)建賬號和庫及添加坐標索引的流程分析
  • MongoDB查詢之高級操作詳解(多條件查詢、正則匹配查詢等)
  • SpringBoot+MongoDB實現(xiàn)物流訂單系統(tǒng)的代碼
  • MongoDb CPU利用率過高問題如何解決
  • Django集成MongoDB實現(xiàn)過程解析

標簽:池州 黃石 楚雄 安順 舟山 白山 菏澤 呼倫貝爾

巨人網(wǎng)絡(luò)通訊聲明:本文標題《利用golang驅(qū)動操作MongoDB數(shù)據(jù)庫的步驟》,本文關(guān)鍵詞  利用,golang,驅(qū)動,操作,MongoDB,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用golang驅(qū)動操作MongoDB數(shù)據(jù)庫的步驟》相關(guān)的同類信息!
  • 本頁收集關(guān)于利用golang驅(qū)動操作MongoDB數(shù)據(jù)庫的步驟的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产91成人video| 亚洲一区二区三区视频在线| 老司机精品视频导航| 国产精品免费麻豆入口| 2022国产麻豆剧果冻传媒剧情| 久久久久久免费视频| 久久人人爽爽人人爽人人片av| 国产高清一区视频| 偷拍一区二区| 一区二区精品视频在线观看| 亚洲精品国产一区二区三区四区在线| 久热中文字幕在线精品免费| 亚洲中午字幕| 免费看又色又爽又黄网站| 欧美久久久网站| 国产一区二区精品久久91| 日本视频免费一区| 亚洲成av人片一区二区三区| 精品久久久免费视频| 电影天堂国产精品| 日本精品免费观看高清观看| youjizz.com在线观看| 日韩色性视频| 紧缚捆绑精品一区二区| 亚洲成人动漫一区| 日韩一区和二区| 欧美a级大片在线| 国产精品免费在线播放| 黄色污污视频软件| 玖玖爱在线精品视频| 亚洲av鲁丝一区二区三区| 成人av在线看| 国产精品人妖ts系列视频| 国内精品**久久毛片app| 怡红院红怡院欧美aⅴ怡春院| 欧美边添边摸边做边爱免费| 丰满人妻一区二区三区免费| 999久久久免费精品国产牛牛| 国产精品免费一区二区三区都可以| 亚洲国产片色| 日本一区二区免费高清| 99re这里只有精品在线| 欧美风情在线视频| 一区二区国产欧美| 国产+成+人+亚洲欧洲自线| 视频一区视频二区视频三区视频四区国产| 午夜小视频在线观看| 国产专区一区| 在线看福利67194| 精品资源在线| 日本精品在线中文字幕| 成人av电影观看| 在线观看av日韩| 青青草久久伊人| 国产精品视频一区二区高潮| 亚洲国产精品久久久久婷蜜芽| 欧美日韩福利在线观看| 国产欧美精品久久| 精品午夜久久| 日韩精品一级中文字幕精品视频免费观看| 91精品视频播放| 国产美女在线一区| 欧美视频一区二| 搞黄网站在线看| 亚洲综合视频一区| 麻豆亚洲精品| 欧美色图第二页| 91精彩视频| 日本在线一区二区三区| 欧美三级蜜桃2在线观看| 黄色大片a级| 亚洲精品乱码久久久久久自慰| 99精品久久只有精品| 人妻av一区二区三区| 久久一区视频| 中文字幕亚洲欧美在线| 亚洲av少妇一区二区在线观看| 久久99精品久久久久久园产越南| 444亚洲人体| 精品久久91| 青春草在线视频免费观看| 一级一级黄色片| 日韩午夜在线影院| 亚洲精品wwwww| 希岛爱理一区二区三区| 97人人做人人人难人人做| 中文岛国精品亚洲一区| 中文字幕日韩一区二区三区不卡| 男人的天堂日韩| 亚欧洲精品在线视频免费观看| 欧美vide| 久久一区激情| 免费a级毛片在线观看| 精国产品一区二区三区a片| 国产91沈先生在线播放| 国产日韩一区二区| 爱啪啪综合导航| 鲁啊鲁视频在线精品| 99自拍偷拍视频| 亚洲成人在线视频播放| 欧美在线观看一二区| 亚洲国产精品电影在线观看| 国产精品21p| 男女激烈动态图| 在线免费观看电影网站入口| 亚洲丝袜制服诱惑| 国产亚洲激情视频在线| 久久久午夜精品理论片中文字幕| 男女一区二区三区| 一区二区三区**美女毛片| hd100%videos日本| 97av免费视频| www.午夜色大片| 日本精品免费观看| 欧美日韩色一区| 2024国产精品| av一级毛片| 久久精品无码一区二区日韩av| 久久久久久99精品| 成人三级网址| 在线天堂www在线国语对白| 欧美中文字幕一二三区视频| 1024免费在线视频| 蜜臀视频在线观看| 亚洲第一页中文字幕| 欧美激情在线观看视频免费| 亚洲国产精品久久久久久| 精品人妻一区二区三区四区不卡| 国产精品一区二区羞羞答答| 久久高清无码视频| 国产日本韩国在线播放| 成人区精品一区二区| 亚洲欧洲日产国码二区| 国内在线免费视频| 从欧美一区二区三区| 国产色在线观看| 97精品人妻一区二区三区香蕉| 亚洲一区二区三区乱码aⅴ蜜桃女| 91午夜在线| 丁香六月综合| 欧美gay视频| 国产精品理论片| 国产一区二区三区中文字幕| 欧美亚洲视频在线观看| 成人久久久精品乱码一区二区三区| 亚洲一区二区自拍| 怡红院怡春院首页| 一区二区视频免费观看| 91久久精品无码一区二区| 在线观看黄网站| 2024最新电影免费在线观看| 精品视频在线免费| 午夜国产精品影院在线观看| 日韩网址在线观看| 久热成人在线视频| 亚洲一区二区美女| 久久av喷吹av高潮av| 久久综合九色综合欧美98| 欧美日韩国产精品一卡| 国产小视频在线看| 久久99这里只有精品| 国产性xxxx18免费观看视频| 亚洲国产欧美一区二区丝袜黑人| 亚洲电影小说图| av在线免费看片| 国产精品麻豆视频| 99自拍视频在线观看| 后进极品白嫩翘臀在线视频| 精品少妇一区二区三区在线| 日韩三级网址| 乱妇乱女熟妇熟女网站| 麻豆mv在线看| 黑丝美女一区二区| 老司机亚洲精品一区二区| 欧美电影免费观看| 日本在线播放一区二区| 欧美2区3区4区| 色婷婷成人综合| proumb性欧美在线观看| av网站观看| 污污视频在线观看网站| 日韩在线你懂得| 欧美日韩一区二区三区在线播放| wwww在线观看免费视频| 九九九久久久久久| 成年网在线观看免费观看网址| 亚洲欧美精品中文第三| 国产一二在线观看| 欧美激情国产日韩精品一区18| 综合另类专区| www浪潮av99com| 天天色综合色| 国内精品久久久久久久久久| 欧美性感一区二区三区| 中文字幕一区二区精品| 国产又粗又猛又爽又黄的视频四季| 乱色精品无码一区二区国产盗| 欧美激情一区二区三区在线视频观看| 精品国产高清a毛片无毒不卡| 第一会所sis001亚洲| yw.139尤物在线精品视频| 日本在线观看a| 午夜av一区二区三区| 人妻精品一区二区三区| 免费中文字幕| 欧美一区二区视频免费观看| 欧美国产偷国产精品三区| 亚洲婷婷在线| 女性生殖扒开酷刑vk| 国产亚洲精品福利| 国产美女免费看| 欧美成人精精品一区二区频| 国产精品欧美激情在线| 3atv在线一区二区三区| 国产精品日韩成人| 日韩综合一区二区| 欧美97人人模人人爽人人喊视频| 欧美成人午夜激情| 国产精品扒开腿做爽爽爽视频软件| 亚洲**2019国产| 91麻豆精品国产| 日韩精品久久久毛片一区二区| 一本色道久久| 国产伦精品一区二区三区在线| 国产精品自拍电影| 潮喷失禁大喷水aⅴ无码| xfplay5566色资源网站| 欧美在线免费一级片| 懂色av中文在线| 国产精品久久久久久久久电影网| 精品国产欧美一区二区三区成人| 日日骚一区二区网站| 三级在线播放| 九色中文视频| 亚洲精品午夜| 日韩一区二区三区三四区视频在线观看| 狠狠色综合色综合网络| 亚洲精品乱码电影在线观看| 成人3d精品动漫精品一二三| 色综久久综合桃花网| 国产成人美女视频| 5858p先锋影音资源网| 欧美在线中文| 92福利视频午夜1000合集在线观看| 2023亚洲男人天堂| 91精品国产高清久久久久久| 精品人妻一区二区三区四区| 黄色三级视频片| 亚洲精品一二三四区| 国产91丝袜在线播放九色| 中文字幕日韩第一页| 色婷婷成人综合| www.国产com| 7878成人国产在线观看| 国产一区二区三区丝袜| 亚洲一区二区三区四区五区六区| 国产麻豆一区二区三区精品视频| 超碰国产精品一区二页| 蜜臀久久久99精品久久久久久| 日韩国产在线| www.天堂在线| 免费在线不卡视频| 一级片视频网站| 四虎电影网址| 国产一区二区三区黄| 亚洲一二在线观看| 尤物tv在线精品| 91黑人精品一区二区三区| 操欧美女人视频| 久久www人成免费看片中文| 色一情一乱一伦一区二区三区| 免费在线不卡视频| 亚洲天堂狠狠干| 97在线视频国产| 国产精品一区视频网站| 台湾亚洲精品一区二区tv| 欧美日韩理论片| 日韩成人免费视频| yellow字幕网在线| 黄色一级片一级片| 4444免费观看| 亚洲国产成人爱av在线播放| 亚洲欧美激情四射在线日| 国产一级免费视频| 亚洲精品成人网| 久久久av一区| 日韩精品视频在线观看免费| 日韩中文字幕av电影| 免费一级在线观看播放网址| 精品96久久久久久中文字幕无| 国产精品视频在线观看| 久久先锋影音av| 国产精品无码粉嫩小泬| 中文字幕精品www乱入免费视频| 久久伊人精品| 日本美女久久| 日韩欧美三级| 国产精品夜夜夜一区二区三区尤| 忘忧草在线www成人影院| 久久精品在线播放| 欧美一区二区三区人| 中文字幕一区二区三区手机版| 在线观看免费观看在线| 97视频在线播放| 久久国产精品一区二区| 日本高清视色| 一区二区久久久久| 欧美精品久久久久久久久| 黄色网页在线观看| 精品国产一区二区国模嫣然| 奇米成人av国产一区二区三区| 国产手机精品在线| 国产精品国产三级国产三级人妇| 97在线国产视频| 亚洲欧美自拍另类| 亚洲美女福利视频网站| 欧美精品久久久久久久久久| 天天操夜夜操夜夜操| 日本香蕉视频在线观看| 欧美视频免费看| 午夜精品国产精品大乳美女| 久久国产视频一区| 国产精品va在线播放| 91av视频导航| 自拍偷拍亚洲欧美| 久久久女人电视剧免费播放下载| 久久久久久久久久久免费精品| 亚洲国产中文字幕在线|