主頁 > 知識(shí)庫 > mongodb官方的golang驅(qū)動(dòng)基礎(chǔ)使用教程分享

mongodb官方的golang驅(qū)動(dòng)基礎(chǔ)使用教程分享

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

前言

mongo數(shù)據(jù)庫在nodejs平臺(tái)有2個(gè)常用驅(qū)動(dòng),mongodb和mongoose,mongodb接口非常接近mongo數(shù)據(jù)庫原生的操作方式,是helloworld之類演示代碼的首選mongo數(shù)據(jù)庫連接驅(qū)動(dòng),因此成為大部分nodejs初學(xué)者最先接觸的mongo數(shù)據(jù)庫驅(qū)動(dòng)。初學(xué)者在學(xué)會(huì)mongo連接的同時(shí),卻也可悲的被helloword這種演示性質(zhì)的數(shù)據(jù)庫操作習(xí)慣潛移默化了。

本文主要介紹的是關(guān)于mongodb官方的golang驅(qū)動(dòng)使用的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧

使用教程如下:

導(dǎo)入

go get github.com/mongodb/mongo-go-driver/mongo

鏈接mongo服務(wù)

if client, err = mongo.Connect(getContext(), url); err != nil {
  checkErr(err)
 }

判斷服務(wù)是否可用

if err = client.Ping(getContext(), readpref.Primary()); err != nil {
  checkErr(err)
 }

選擇數(shù)據(jù)庫和集合

collection = client.Database("testing_base").Collection("howie")

刪除這個(gè)集合

collection.Drop(getContext())

插入一條數(shù)據(jù)

if insertOneRes, err = collection.InsertOne(getContext(), howieArray[0]); err != nil {
  checkErr(err)
 }
 fmt.Printf("InsertOne插入的消息ID:%v\n", insertOneRes.InsertedID)

批量插入數(shù)據(jù)

if insertManyRes, err = collection.InsertMany(getContext(), howieArray); err != nil {
  checkErr(err)
 }
 fmt.Printf("InsertMany插入的消息ID:%v\n", insertManyRes.InsertedIDs)

查詢單條數(shù)據(jù)

if err = collection.FindOne(getContext(), bson.D{{"name", "howie_2"}, {"age", 11}}).Decode(howie); err != nil {
  checkErr(err)
 }
 fmt.Printf("FindOne查詢到的數(shù)據(jù):%v\n", howie)

查詢單條數(shù)據(jù)后刪除該數(shù)據(jù)

if err = collection.FindOneAndDelete(getContext(), bson.D{{"name", "howie_3"}}).Decode(howie); err != nil {
  checkErr(err)
 }
 fmt.Printf("FindOneAndDelete查詢到的數(shù)據(jù):%v\n", howie)

詢單條數(shù)據(jù)后修改該數(shù)據(jù)

if err = collection.FindOneAndUpdate(getContext(), bson.D{{"name", "howie_4"}}, bson.M{"$set": bson.M{"name": "這條數(shù)據(jù)我需要修改了"}}).Decode(howie); err != nil {
  checkErr(err)
 }
 fmt.Printf("FindOneAndUpdate查詢到的數(shù)據(jù):%v\n", howie)

查詢單條數(shù)據(jù)后替換該數(shù)據(jù)(以前的數(shù)據(jù)全部清空)

if err = collection.FindOneAndReplace(getContext(), bson.D{{"name", "howie_5"}}, bson.M{"hero": "這條數(shù)據(jù)我替換了"}).Decode(howie); err != nil {
  checkErr(err)
 }
 fmt.Printf("FindOneAndReplace查詢到的數(shù)據(jù):%v\n", howie)

一次查詢多條數(shù)據(jù)(查詢createtime>=3,限制取2條,createtime從大到小排序的數(shù)據(jù))

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查詢到的數(shù)據(jù):%v\n", howieArrayEmpty)

查詢集合里面有多少數(shù)據(jù)

if size, err = collection.Count(getContext(), nil); err != nil {
  checkErr(err)
 }
 fmt.Printf("Count里面有多少條數(shù)據(jù):%d\n", size)

查詢集合里面有多少數(shù)據(jù)(查詢createtime>=3的數(shù)據(jù))

if size, err = collection.Count(getContext(), bson.M{"createtime": bson.M{"$gte": 3}}); err != nil {
  checkErr(err)
 }
 fmt.Printf("Count里面有多少條數(shù)據(jù):%d\n", size)

修改一條數(shù)據(jù)

if updateRes, err = collection.UpdateOne(getContext(), bson.M{"name": "howie_2"}, bson.M{"$set": bson.M{"name": "我要改了他的名字"}}); err != nil {
  checkErr(err)
 }
 fmt.Printf("UpdateOne的數(shù)據(jù):%d\n", updateRes)

修改多條數(shù)據(jù)

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的數(shù)據(jù):%d\n", updateRes)

刪除一條數(shù)據(jù)

if delRes, err = collection.DeleteOne(getContext(), bson.M{"name": "howie_1"}); err != nil {
  checkErr(err)
 }
 fmt.Printf("DeleteOne刪除了多少條數(shù)據(jù):%d\n", delRes.DeletedCount)

刪除多條數(shù)據(jù)

if delRes, err = collection.DeleteMany(getContext(), bson.M{"createtime": bson.M{"$gte": 7}}); err != nil {
  checkErr(err)
 }
 fmt.Printf("DeleteMany刪除了多少條數(shù)據(jù):%d\n", delRes.DeletedCount)

完整演示代碼 點(diǎn)擊這里

查看mongo BSON詳細(xì)用法 點(diǎn)擊這里

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • Golang Mongodb模糊查詢的使用示例
  • golang 連接mongoDB的方法示例
  • Golang對(duì)MongoDB數(shù)據(jù)庫的操作簡(jiǎn)單封裝教程
  • golang操作mongodb的方法
  • 詳解Golang使用MongoDB通用操作

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mongodb官方的golang驅(qū)動(dòng)基礎(chǔ)使用教程分享》,本文關(guān)鍵詞  mongodb,官方,的,golang,驅(qū)動(dòng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mongodb官方的golang驅(qū)動(dòng)基礎(chǔ)使用教程分享》相關(guān)的同類信息!
  • 本頁收集關(guān)于mongodb官方的golang驅(qū)動(dòng)基礎(chǔ)使用教程分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章