# MongoDB
* * * * *
--: 作者:Fuzz
時間:2018年8月15日
* * * * *
### 何為MongoDB?
#### 簡介
1.MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。
2.在高負載的情況下,添加更多的節點,可以保證服務器性能。
3.MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
4.MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象
**需要引入的包**
go get gopkg.in/mgo.v2
### 操作的結構體
type Xuesheng struct {
Id_ bson.ObjectId `bson:"_id,omitempty"`
Name string `bson:"name"`
Phone string `bson:"phone"`
Email string `bson:"email"`
Sex string `bson:"sex"`
}
### 引入包
import (
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
### 連接操作
conn, err := mgo.Dial(url) //url=mongodb://user_name:password@192.16.8.1.1:27017
mongo鏈接
//鏈接一臺
mongodb://user_name:password@192.16.8.1.1:27017
//鏈接mongodb集群
mongodb://user_name:password@192.16.8.1.1,192.16.8.1.2,192.16.8.1.3:27017
### 切換數據庫
c := conn.DB("數據庫")
### 切換集合
c := db.DB("數據庫").C("集合")
### 插入操作
生成mogonID
bson.NewObjectId()
test := Xuesheng{
Name: "Fuzz",
Phone: "18888888888",
Email: "18888888888@qq.com",
Sex: "男",
}
err := c.Insert(&test)
### 查詢操作
data := Xuesheng{}
err = c.Find(bson.M{"name": "Fuzz"}).One(&data)
//使用id查詢
c.Find(bson.M{"_id":bson.ObjectIdHex("5b72cc3db96a6957bad97ddf")}).One(&x)
c.FindId(bson.ObjectIdHex("5b72cc3db96a6957bad979a5")).One(&x)
### Id 查詢條件
id := bson.ObjectIdHex("5a66a96306d2a40a8b884049")
### 更新操作
//更新一條
err := c.Update(bson.M{"email": "18888888888@qq.com"}, bson.M{"$set": bson.M{"name": "123"}})
//更新多條
num,err := c.UpdateAll(bson.M{"email": "18888888888@qq.com"}, bson.M{"$set": bson.M{"name": "123"}})
### 刪除操作
//刪除一行
_, err := c.RemoveAll(bson.M{"phone": "18888888888"})
//刪除多行
check,err := c.RemoveAll(bson.M{"user_id":1})
### 注意采坑
https://studygolang.com/articles/4583