# 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