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

主頁 > 知識庫 > 詳解Golang使用MongoDB通用操作

詳解Golang使用MongoDB通用操作

熱門標簽:重慶慶云企業(yè)400電話到哪申請 上海極信防封電銷卡價格 仙桃400電話辦理 不封卡外呼系統(tǒng) 寧波語音外呼系統(tǒng)公司 湛江crm外呼系統(tǒng)排名 宿遷便宜外呼系統(tǒng)代理商 鄭州智能語音電銷機器人價格 地圖標注免費定制店

MongoDB是Nosql中常用的一種數(shù)據(jù)庫,今天筆者就簡單總結一下Golang如何使用這些通用的供能的,不喜勿噴。。。

       研究的事例結構如下:

type LikeBest struct {
 AuthorName string `bson:"authorname,omitempty"`
 BookName  string `bson:"bookname,omitempty"`
 PublishTime string `bson:"publishtime,omitempty"`
 LastReadTime string `bson:"lastreadtime,omitempty"`
}

type Personnal struct {
 UserName  string  `bson:"username,omitempty"`
 WhereCity  string  `bson:"wherecity,omitempty"`
 BookSCount int  `bson:"bookscount,omitempty"`
 FavoriteBooks []LikeBest `bson:"favoratebooks,omitempty"`
}

建立與MongoDB的連接

 session, err := mgo.Dial("localhost:27017")
 if err != nil {
  panic(err)
 }
 defer session.Close()

 c := session.DB("PersonManage").C("Persons")

注意:以下操作條件默認均為:username=”impressionw”

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

1、使用Insert()函數(shù)是最簡單且通用的方式

err := c.Insert(p) //p為插入的結構體數(shù)據(jù)

2、使用upsert()函數(shù)【更新或插入】

change := mgo.Change{
  Update: bson.M{"$set": p},
  ReturnNew: false,
  Remove: false,
  Upsert: true,
}
_, err := c.Find(bson.M{"username": "impressionw"}).Apply(change, nil)

       或許,你覺得第一種方式更簡潔,但是實際場景中,第二種也非常實用
        1. 它不僅只能插入數(shù)據(jù),Update字段可以接收多個參數(shù)插入,但是關鍵字不能相同【不能同時有2個”$set”】
        2. 它能返回處理前或處理后的document,若返回,則Apply的第二個參數(shù)即是結果
        3. 它可以結合select使用

注意:$set 只修改指定字段的值,不影響其他值

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

1、查詢整個文檔

err = c.Find(bson.M{"username": "impressionw"}).One(result)

2、只返回 FavoriteBooks 對應的字段,忽略其他信息
    這里用到了Select(),select可以設置,返回的內容:

select{‘filedname':0},表示忽略該字段則結果不返回此字段
select{‘filedname':1},表示關注該字段則只返回關注字段
err = c.Find(bson.M{"username": "impressionw"}).Select(bson.M{"favoratebooks": 1}).One(result)

3、查詢文檔的_id

var result interface{}
err = c.Find(bson.M{"username": "impressionw"}).Select(bson.M{"_id": 1}).One(result)

var document_id string
switch value := result.(type) {
case bson.M:
 mapid := value["_id"]
 if mapid != nil {
  id := mapid.(bson.ObjectId)
  document_id = id.Hex()
 }
}

注意:若是查找username含有”impressionw”的文檔,可用正則匹配查找,條件這樣寫:

query = bson.M{"username": bson.M{"$regex": "impressionw"}}

4、查詢數(shù)組中匹配元素,只返回含有匹配元素的文檔,需要用到Mongdob的聚合aggregate

    相關操作符的含義如下:

  • $project:修改輸入文檔的結構??梢杂脕碇孛?、增加或刪除域,也可以用于創(chuàng)建計算結果以及嵌套文檔。
  • match:用于過濾數(shù)據(jù),只輸出符合條件的文檔。match使用MongoDB的標準查詢操作。
  • $limit:用來限制MongoDB聚合管道返回的文檔數(shù)。
  • $skip:在聚合管道中跳過指定數(shù)量的文檔,并返回余下的文檔。
  • $unwind:將文檔中的某一個數(shù)組類型字段拆分成多條,每條包含數(shù)組中的一個值。
  • $group:將集合中的文檔分組,可用于統(tǒng)計結果。
  • $sort:將輸入文檔排序后輸出。
  • $geoNear:輸出接近某一地理位置的有序文檔。

下面的代碼,將只返回FavorateBooks字段中,bookname為”The Go Programming Language”的書籍,且只關注favoratebooks,不會輸出個人信息

pipe := c.Pipe([]bson.M{{"$unwind": "$favoratebooks"},
  {"$match": bson.M{"username": "impressionw", "favoratebooks.bookname": "The Go Programming Language"}},
  {"$project": bson.M{"favoratebooks": 1}}})
resp := []bson.M{}
err := pipe.All(resp)

這樣可以達到目的了

更新文檔

1、更新WhereCity字段—關鍵字 $set,將WhereCity修改為”ShangHai“:

err = c.Update(bson.M
{"username": "impressionw"
}, 
bson.M{"$set": bson.M
{"wherecity": "ShangHai"
}})

2、更新FavoriteBooks中的LastReadTime字段

   查詢條件:username=”impressionw”、bookname=”The Go Programming Language”,將LastReadTime字段更改為:”O(jiān)ct 26, 2017”

change := mgo.Change{
  Update: bson.M{"$set": bson.M{"favoratebooks.$.lastreadtime": "Oct 26, 2017"}},
  ReturnNew: false,
  Remove: false,
  Upsert: true,
 }
query := bson.M{"username": "impressionw", "favoratebooks": bson.M{"$elemMatch": bson.M{"bookname": "The Go Programming Language"}}}
_, err = c.Find(query).Select(bson.M{"favoratebooks.bookname": 1}).Apply(change, nil)

3、更新一個 FavoriteBooks 的整個數(shù)組文檔,即新增一本書的信息
      給username=”impressionw”的文檔新增一條書籍記錄,同時將BookSCount字段自增1

Act := []LikeBest{
 LikeBest{
  AuthorName: "YuHen",
  BookName:  "Go Learning",
  PublishTime: "Dec 27, 2014",
  LastReadTime: "Dec 29, 2016",
 },
}
change := mgo.Change{
 Update: bson.M{"$inc": bson.M{"bookscount": 1}, "$push": bson.M{"favoratebooks": bson.M{"$each": Act}}},
 ReturnNew: false,
 Remove: false,
 Upsert: true,
}
_, err := c.Find(bson.M{"username": "impressionw"}).Apply(change, nil)

注意:

1、此處可用addToSet代替push,addToSet不會添加已有的數(shù)據(jù),push 會添加重復的數(shù)據(jù),可以分別應用于不同場景
2、$inc 對文檔的某個值為數(shù)字型(只能為滿足要求的數(shù)字)的鍵進行增減的操作, 值為正數(shù)表示自增,值為負數(shù)表示自減

刪除文檔

1、刪除喜歡的一本書籍信息,同時喜歡書記數(shù)量自減1

var option = bson.M
{"$pull": bson.M{"favoratebooks": bson.M{"bookname": "Go Learning"}}, 
"$inc": bson.M{"bookscount": -1}}
err := c.Update(bson.M{"username": "impressionw"}, option)

2、刪除所有喜歡的書籍,同時將bookscount字段置為 0

var data = bson.M{"$unset": bson.M
{"favoratebooks": true},
 "$set": bson.M{"bookscount": 0}}
err = c.Update(bson.M
{"username": "impressionw"}, data)

3、刪除整個文檔,根據(jù)”_id”字段刪除文檔

err := session.DB("PersonManage").C("Persons").Remove(bson.M
{"_id":bson.ObjectIdHex("

到此這篇關于詳解Golang使用MongoDB通用操作的文章就介紹到這了,更多相關Golang使用MongoDB通用操作內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Golang 如何判斷數(shù)組某個元素是否存在(isset)
  • golang獲取網(wǎng)卡信息操作
  • golang判斷net.Conn 是否已關閉的操作
  • 解決golang json解析出現(xiàn)值為空的問題
  • golang 獲取字符串長度的案例
  • Golang獲取目錄下的文件及目錄信息操作
  • 對Golang中的runtime.Caller使用說明
  • 如何判斷Golang接口是否實現(xiàn)的操作
  • 詳解golang中的method

標簽:青海 遼寧 安康 海南 電子產(chǎn)品 儋州 西雙版納 物業(yè)服務

巨人網(wǎng)絡通訊聲明:本文標題《詳解Golang使用MongoDB通用操作》,本文關鍵詞  詳解,Golang,使用,MongoDB,通用,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Golang使用MongoDB通用操作》相關的同類信息!
  • 本頁收集關于詳解Golang使用MongoDB通用操作的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    日本系列欧美系列| 精品少妇久久久久久888优播| 搞黄网站免费观看| 亚洲第一视频在线播放| 视频在线这里都是精品| 日韩欧美亚洲视频| 久久亚洲综合国产精品99麻豆精品福利| 日韩一二三区不卡在线视频| 97成人超碰视| 亚洲影影院av| 国产日产欧美精品一区二区三区| 波多野吉衣中文字幕| 亚洲精品国产熟女久久久| 欧美成人精品免费| 国产91对白刺激露脸在线观看| 亚洲精品伦理| 欧美精品少妇一区二区三区| 人妻与黑人一区二区三区| 国产av无码专区亚洲精品| 91久久国产精品| 婷婷久久综合九色国产成人| 国产成人av一区二区三区在线观看| 中文在线资源观看视频网站免费不卡| 亚洲全黄一级网站| 亚洲综合在线五月| 一区二区三区在线播| 中文字幕第五页| 一区二区三区欧美成人| 丁香五精品蜜臀久久久久99网站| 一区两区小视频| 黄色av一区二区三区| 91精品国产91热久久久做人人| 日本高清xxxx| 91精品国产一区二区三区香蕉| eeuss影院www在线观看免费| 国产精品久久久久久在线观看| 亚洲一区二区观看| 国产精品久久久久久久久久精爆| 国产又粗又猛视频| 在线播放豆国产99亚洲| 在线不卡欧美精品一区二区三区| 成人a'v在线播放| 亚洲女在线观看| 激情伊人五月天久久综合| 国产美女一区二区三区| 天堂av一区二区| 久久人妻少妇嫩草av无码专区| 日韩在线视频观看| 久久久久久久久免费视频| 午夜视频在线瓜伦| 91精品国产色综合久久不卡98| 在线观看av免费观看| 中文字幕第二区| 一区二区三区电影网| 亚洲色图18p| www.亚洲精品| 日韩精品在线电影| 亚洲午夜久久久久久久久久久| 国产资源中文字幕| 色佬视频在线观看| 亚洲精品在线观看av| 亚洲制服丝袜在线| 天天操天天操天天色天天要| 新版中文字幕在线资源| 韩国av一区二区三区| 日本亚洲最大的色成网站www| 精品女厕一区二区三区| 国产国语videosex另类| 亚洲综合网在线| 亚洲高清三级视频| 亚洲天堂2020| 污黄色在线观看| 年下总裁被打光屁股sp| 不卡一区二区三区四区五区| 黄色动漫在线免费观看| 成年人视频在线免费| 加勒比日本影视| 在线欧美三区| 黄色免费在线看| 试看120秒一区二区三区| 91成人综合网| 97在线视频一区| 免费高清在线观看免费| 成人精品一二三区| 一区二区在线播放视频| 亚洲欧洲精品一区二区三区| 自拍视频在线观看一区二区| 在线a视频网站| 国产精品综合视频| 午夜电影一区二区三区| 久久久av亚洲男天堂| 人人艹在线视频| 日韩黄色三级在线观看| 国产三级电影| 黄色一级视频在线观看| 妺妺窝人体色www婷婷| 日韩欧美三级一区二区| 激情欧美一区二区三区黑长吊| 免费看久久久| 欧美性生交大片免网| 97人人澡人人爽人人模亚洲| 一区二区激情| 黄色小网站在线观看| 国产精品欧美激情在线观看| 久久久97精品| 性欧美69xoxoxoxo| 成人三级网址| 7799国产精品久久久久99| 亚洲一区二区三区四区中文字幕| 欧美国产日韩二区| 亚洲电影男人天堂| 欧美日本在线视频中文字字幕| 日韩专区视频网站| 欧美日韩亚洲一区二区三区| 日韩中文字幕免费| 久久五月天婷婷| 国产拍揄自揄精品视频麻豆| av 日韩 人妻 黑人 综合 无码| 欧美视频一二区| 久久99久久99| 成人性爱视频在线观看| 激情一区二区三区| 欧美成人午夜精品免费| 久久综合九色综合欧美狠狠| 国产精品原创| 国产精品老熟女视频一区二区| 国产亚洲福利| 欧美精品粉嫩高潮一区二区| 欧美 日韩 国产一区二区在线视频| 三级在线电影| av在线电影免费观看| 放荡的美妇在线播放| 中文字幕区一区二区三| 国产精品视频500部| 国产精品三级在线| 国产精品不卡一区二区三区| yw.139尤物在线精品视频| 欧美裸体男粗大视频在线观看| 国产精品10p综合二区| 欧美性xxxxhd| 日韩av中文字幕第一页| 欧美日韩亚洲国产综合| 国产探花在线视频| 中文字幕永久视频| 日本高清+成人网在线观看| 欧美xxxx性猛交bbbb| 国产精品对白| 天堂网2014av| 欧美大尺度在线观看| 久久精品国产亚洲一区二区三区| 精品91久久久| 青青青爽久久午夜综合久久午夜| 国产91|九色| 丁香网亚洲国际| 日日日日人人人夜夜夜2017| www.久久东京| 裸体大乳女做爰69| 九九久久精品这里久久网| 国产精品久久91| 青青草国产免费自拍| 自拍偷拍色综合| 国产伦精品一区二区三区视频金莲| 天天躁日日躁狠狠躁欧美巨大小说| 日韩无码精品一区二区三区| 日韩av二区在线播放| 黄色在线观看www| 国产夫妻自拍av| 亚洲永久字幕| 在线中文视频| 男人搞女人网站| 男女猛烈无遮挡午夜视频| 国产精品传媒毛片三区| 欧美精品一区二区三区涩爱蜜| 在线电影一区二区三区| 国产精品网在线观看| 亚洲视频一区二区三区四区| 人人玩人人添人人澡免费| 精品国产午夜| 亚洲国产精品国自产拍av秋霞| 亚洲欧美手机在线| 欧美三级电影网址| 国产精品老熟女视频一区二区| av在线播放av| 中文字幕网站在线观看| 先锋影音欧美官网| 国模冰冰炮一区二区| 国产精品久久无码一三区| 久久丁香综合五月国产三级网站| 亚洲一级视频在线观看| 欧美性受xxxx黒人xyx性爽| 91精品福利在线| 亚洲区小说区图片区qvod按摩| 91精品国产高清久久久久久久久| 欧美性猛xxx| 中文字幕日韩精品在线| 欧美视频在线观看一区| 中文字幕 自拍| 亚洲a∨无码无在线观看| 99久久99久久精品国产片果冰| 91福利国产在线观看菠萝蜜| 久久成人18免费网站| 亚洲伦理中文字幕| 鲁大师影院一区二区三区| 超碰成人在线观看| 国产一级淫片免费| 亚洲午夜免费| 国产精品日韩精品中文字幕| 538任你躁在线精品视频网站| 欧美激情一二区| 91香蕉国产视频| 午夜精品久久久久久久久久久久| 国产福利视频在线观看| 手机看片日韩av| 成人无遮挡免费网站视频在线观看| 三上亚洲一区二区| 激情综合闲人网| 国产精品久久久亚洲一区| 日韩免费观看av| 欧美三级电影在线播放| 大杳蕉精品视频在线观看| 日韩视频一区二区三区四区| 国产成人毛毛毛片| 久久er热在这里只有精品66| 北条麻妃视频在线| 亚洲欧美精品aaaaaa片| 国产亚洲美女精品久久久| 亚洲色图美腿丝袜| 亚洲精品va| 91se在线观看| 蜜桃av噜噜一区二区三区麻豆| 国产老熟女伦老熟妇露脸| 欧美精品久久99| 欧美成人精品欧美一级乱| 欧美视频精品一区| 午夜福利理论片在线观看| 成人午夜视频免费在线观看| 国产精品色悠悠| a级影片在线| 久久天堂av综合合色蜜桃网| 国产精品成人播放| 一二三四区在线观看| 青青草av免费在线观看| 欧美成人精品一区二区三区| 99久久99久久久精品棕色圆| 欧美国产97人人爽人人喊| 欧美一区二区三区色| 国产精品日韩久久久| 成人午夜免费在线观看| 亚洲欧美国产另类首页| 日本毛片在线观看| 免费在线播放第一区高清av| 精品视频全国免费看| 欧美激情2020午夜免费观看| 国产最顶级的黄色片在线免费观看| 中文字幕一区二区精品| 日韩有码片在线观看| 国产日韩欧美综合在线| www.8ⅹ8ⅹ羞羞漫画在线看| 女同性一区二区三区人了人一| 久久精品一区二区三区不卡牛牛| www.中文字幕久久久| 波多野结衣成人在线| 欧美美女喷水视频| 欧美色婷婷天堂网站| 久久亚洲av午夜福利精品一区| www.超级碰| 91玉足脚交白嫩脚丫在线播放| 激情五月宗合网| 国产黄大片在线观看| 日韩精品一区二区久久| 午夜精产品一区二区在线观看的| 九七影院97影院理论片久久| 成人av资源| 亚洲一区二区五区| 国产黄色片中文字幕| 成人av男人的天堂| 92国产精品久久久久首页| 亚欧精品一区| 国产精品主播一区二区| 欧美激情国产精品| 91超碰rencao97精品| 国产美女在线一区二区三区| 韩国三级电影在线观看婷婷| 亚洲国产aⅴ天堂久久| 欧美一区二区高清在线观看| 亚洲一区二区av| 国产精品久久久久av福利动漫| 97精品人妻一区二区三区| 网站在线你懂的| 91性感美女视频| 亚洲日本中文字幕| 911精品产国品一二三产区| 91精品久久久久久| 国产一区二区三区四区五区在线| av电影在线观看完整版一区二区| 欧美剧情片在线观看| 三上悠亚一区二区| 国产91色在线观看| 国产精品一二区| 欧美精品一卡| 欧美 日韩 中文字幕| 国产日韩视频在线播放| 欧美午夜精品久久久久久蜜| 日本www在线播放| 日韩视频免费播放| 91精品国产综合久久精品图片| 久久五月天小说| www.日韩av.com| 在线的色视频| 久久免费视频在线观看| 午夜精品久久久久久久99黑人| 东北少妇不带套对白| 免费看毛片的网址| 日韩欧美国产综合在线一区二区三区| 11024精品一区二区三区日韩| 国产69精品99久久久久久宅男| 精品av综合导航| 欧美激情一区二区三区在线| 丁香婷婷综合色啪| 成人激情校园春色| 中国成人在线视频| 国产成人亚洲综合小说区| 影音先锋成人在线电影| 国产第一页精品| 欧美日韩国产观看视频| 少妇性bbb搡bbb爽爽爽欧美| 制服丝袜第一页在线观看| 一起操在线视频|