MongoDB是一个基于分布式文件存储的NoSQL数据库。
安装配置
1、Windows环境安装
可执行文件mongodb-win32-x86_64-2008plus-ssl-4.0.0-signed.msi
2、Ubuntu安装
sudo apt-get install mongodb
查看版本号
mongo-version
重启服务
service mongodb stop
卸载Mongodb
sudo apt-get --purge remove mongodb mongodb-server mongodb-clients
图形化界面
安装robo3t-1.2.1-windows-x86_64-3e50a65.exe
基本操作
SQL术语 | MongoDB术语 |
---|---|
database | database |
table | collection |
row | document |
column | field |
index | index |
table joins | |
primary key | primary key |
1、数据库操作
查看当前数据库,默认为test
db
查看所有数据库名称
show dbs
切换数据库,如果没有则创建
use 数据库名称
删除数据库
db.dropDatabase()
2、集合操作
创建集合
db.createCollection(name)
查看当前数据库的集合
show collections
删除集合
db.集合名称.drop()
3、数据操作
插入数据
db.集合名称.insert({name:"fuhaozhen",gendre:"女"})
查询数据
db.集合名称.find()
指定属性更新
db.集合名称.update({name:"fuhaozehn"},{$set:{name:"liuhaoran"}})
保存
如果文档的_id已经存在则修改,不存在则添加
db.集合名称.save({_id:"2015188026","name":"fuhaozhen"})
指定删除
db.集合名称.remove({gender:"女"},{justOne:true})
全部删除
db.集合名称.remove({})
4、备份与恢复
备份
mongodump -h dbhost -d 数据库名 -o 要备份的数据存放位置
mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak
恢复
mongorestore -h dbhost -d 数据库名 -o --dir 备份数据所在位置
mongorestore -h 192.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1
5、授权
创建超级管理员用户
use admin
db.createUser({
user:"root",
pwd:"123456",
roles:[{
role:"root",
db:"admin"
}]
})
配置文件开启权限验证
security:
authorization: enabled
知识进阶
1、数据查询
find(): 查询
db.集合名称.find({条件})
findOne():查询只返回第一个
db.集合名称.findOne({条件})
pretty():将结果格式化
db.集合名称.find({条件文档}).pretty()
2、比较运算符
等于,默认是等于判断,没有运算符
小于,$lt
小于等于,$lte
大于,$gt
大于等于,#gte
不等于,$ne
查询年龄大于18的学生
db.stu.find({age:{$gt:18}})
3、逻辑运算符
逻辑与(默认)
查询年龄大于18,并且性别为男的学生
db.stu.find({age:{$gt:18}},{gender:"男"})
逻辑或
查询年龄大于18,或性别为女的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:"女"}]})
4、范围运算符
查询年龄为18、28的学生
db.stu.find({age:{$in:[18,28]}})
5、正则表达式
查询姓黄的学生
db.stu.find({name:/^黄/})
6、排序
db.集合名称.find().sort({字段:1,...})
根据性别降序,再根据年龄升序
db.stu.find().sort({gender:-1,age:1})
7、分页
limit():用于读取指定数量的文档
db.集合名称.find().limit(n)
查询2条学生信息
db.stu.find().limit(2)
skip():用于跳过指定数量的文档
db.集合名称.find().skip(n)
查询从第3条开始的学生信息
db.stu.find().skip(2)
8、统计
db.集合名称.find({条件}).count()
统计男生个数
db.stu.find({gender:"男"}).count()
9、去重
db.集合名称.distinct("去重字段",{条件})
查找年龄大于18的性别
db.stu.distinct("gender",{age:{$gt:18}})
与python交互
1、安装
pip install pymongo
2、操作
# 引入模块
import pymongo
# 连接,创建客户端
client=pymongo.MongoClient("localhost",27017)
# 获得数据库test1
db = client["test1"]
# 获得集合stu
stu = db["stu"]
# 添加文档
stu.insert_one({"name":"fuhaozhen"})
# 查找一个文档
stu.find_one()
# 查找多个文档
for cur in stu.find():
print(cur)
或者
cur = stu.find()
cur.next()
cur.next()
# 获取文档个数
print(stu.count())
软件链接:https://pan.baidu.com/s/12kqceTevd987DtuxtNjHrA
提取码:m8tk