1 CentOS安装MongoDB
以阿里云ECS控制台远程连接的命令行模式为例。
先创建yum仓库配置:
sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo
然后粘贴的代码:
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
然后Esc退出编辑模式,输入:wq
命令回车保存退出。
注意!粘贴时候可能丢失开头的
[m
部分,需要键盘箭头移动上去手工补全。如果发生异常,可以重新执行sudo vi..
命令,Esc后输入:\%d
删除所有,再重新粘贴,实在不行就rm /etc/yum.repos.d/mongodb-org-4.4.repo
删除文件重新再来。
然后执行下面命令安装:
sudo yum install -y mongodb-org
成功后显示Complete!
2 使用MongoDB
启动sudo systemctl start mongod
停止sudo systemctl stop mongod
重启sudo systemctl restart mongod
查看状态(输出一片代码)sudo systemctl status mongod
开机启动sudo systemctl enable mongod
进入控制台mongo
控制台CLI基本操作:
show dbs:显示数据库列表
show collections:显示当前数据库中的集合(类似关系数据库中的表)
show users:显示用户
use <db name>:切换当前数据库,没有的话就会自动创建
db.user.insert({name: "zhyuzh", age: 205}) 创建一条数据,新建的数据库必须创建数据后才会显示
db.dropDatabase() :删除当前数据库,无提示直接删,谨慎!!
db.help():显示数据库操作命令
db.foo.help():显示集合操作命令,并非真正意义上的命令
db.foo.find():当前数据库集合进行查找,没有条件的话会列出所有数据
db.foo.find( { a : 1 } ):当前数据库集合进行查找a值为1的数据
exit():退出控制台
结合$语法的查询复杂操作:
db.userInfo.findOne();
db.userInfo.find().limit(1);
db.userInfo.find({age: {$gte: 25}}).count();
db.userInfo.find({age: {$gt: 22}});
db.userInfo.find({age: {$gte: 25}});
db.userInfo.find({age: {$lte: 25}});
db.userInfo.find({age: {$gte: 23, $lte: 26}});
db.userInfo.find({}, {name: 1, age: 1});
db.userInfo.find({name: 'zhangsan', age: 22});
db.userInfo.find().sort({age: 1});
db.userInfo.find().sort({age: -1});
db.userInfo.find().limit(10).skip(5);
db.users.save({name: ‘zhangsan’, age: 25, sex: true});
db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);
db.users.remove({age: 132});
db.users.findAndModify({
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: 'a2'}, $inc: {age: 2}},
remove: true
});
更多命令参考官方文档
3 Golang的MongoDB驱动
这里直接安装mongo-go-driver
驱动:
go get go.mongodb.org/mongo-driver/mongo
然后使用下面的golang代码连接并测试:
package main
import (
"context"
"fmt"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
collection := client.Database("temp").Collection("users")
//先写入,再更新,再读取
collection.InsertOne(ctx, bson.M{"name": "zhyuzh", "age": 99})
collection.UpdateOne(ctx, bson.M{"name": "zhyuzh"}, bson.M{"$set": bson.M{"age": 100}})
var result struct {
Name string
Age float64
}
collection.FindOne(ctx, bson.M{"name": "zhyuzh"}).Decode(&result)
fmt.Println("retrieve:", string(result.Name), result.Age)
}
如果提示某些模块no required module provides package...
,那么就按照add it
的提示进行安装即可。
go run /src/app/app.go
运行上面的代码,每次都会增多一个记录。你可以进入CLI控制台执行use temp
然后db.user.drop()
清空这些临时数据记录。
END