go 使用mongodb
生活随笔
收集整理的這篇文章主要介紹了
go 使用mongodb
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
mongodb官方沒有關于go的mongo的驅動,因此只能使用第三方驅動,mgo就是使用最多的一種。
官網:http://labix.org/mgo
文檔:http://godoc.org/gopkg.in/mgo.v2
等下繼續補充。。。。。
mgo使用指南
更新
需要使用 "$set" 來進行包裝
err = collection.Update(bson.M{"name": "ccc"}, bson.M{"$set": bson.M{"name": "ddd"}})碰到的問題
多層查詢條件查詢數據
在bson.M的key中使用**"."**來連接。如bson.M{"content.status": 1 }
例子:
數據庫中結構是這樣的
{"_id" : ObjectId("585a5147a6343cbc4874f524"),"type" : 2,"taskno" : NumberLong(10911255838672076),"content" : {"event" : {"label" : "EventLable","content" : "123123","xxx_unrecognized" : { "$binary" : "", "$type" : "00" }},"expiration" : NumberLong(1482918855),"status" : 1} }我需要查詢type=2, status=1, expiration > time.Now().Unix() 的數據
eventTaskPersist := []taskprocess.EventTaskPersist{}db.C(DbCollectionTaskContents).Find(bson.M{"type": TaskTypeEvent, "content.status": 1, "content.expiration":bson.M{"$gt": time.Now().Unix()} }).All(&eventTaskPersist)使用"." 來獲得下級字段。
數組是否包含指定的數據
如何查詢MongoDB中,一個數組是否包含指定的數據
用$in操作符,比如有如下articles的記錄:
{ "_id" : ObjectId("5225f0700d4476dc0ed87df1"), "title" : "title1", "tags" : [ "a", "b", "c" ] } { "_id" : ObjectId("5225f0840d4476dc0ed87df2"), "title" : "title2", "tags" : [ "a", "b", "d" ] }在mongodb shell中:
db.articles.find({tags: {$in: ['a']}})即可查出所有tags中有'a'的記錄。
用labix.org/v2/mgo的話:
c.Find(bson.M{"tags": bson.M{"$in": []string{"a"}}}).All(&articles)當前值在數組范圍內
如上例子中 tags:["2.1", "3.2"]
c.Find(bson.M{"tags.0": bson.M{"$lte": 當前值}, "tags.0": bson.M{"$gte": 當前值}}).All(&articles)表示 2.1<=當前值<=3.2
參考
golang中使用mongodb的操作類以及如何封裝
PS: 覺得不錯的請點個贊吧!! (? ??_??)?
轉載于:https://my.oschina.net/solate/blog/805114
總結
以上是生活随笔為你收集整理的go 使用mongodb的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 控件联动(三级联动)
- 下一篇: angular2 安装