** MongoDBx相关操作**
MongoBD直接存硬盘,没有数据缓存
创建用户,用户名+密码+权限
db.createUser({user:“A”,pwd:“123”,roles:[“root”]})
删除用户
db.dropUser(‘用户名’)
查看用户
show users
退出
exit
登录
meongo
查看所有数据库
show dbs
**用户登录
db.auth(‘username’,‘pwd’)
**查看当前数据库
db
**切换数据库
use xxx
**新建数据库
db 数据库名
**删除数据库
use 库名
db.dropDatabase()
**查看所有数据表
show collections
**添加数据:
db.表名.insert({"":""})
**删除数据
db.表名.remove({“键”:“值”})
**删除符合条件的一组数据
db.表名.remove({“键”:“值”},{justOne=true})
**表示数据大于某值
{key:{KaTeX parse error: Expected 'EOF', got '}' at position 9: gt:value}̲} **表示数据小于某值 {k…lt:value}}
**把表中数据清空
db.表名.remove({})
*表查找指定条件—关系—且
方法一:db.tablename.find({key1:{KaTeX parse error: Expected 'EOF', got '}' at position 10: gt:value1}̲,key2:value2}) …and:[{key1:{KaTeX parse error: Expected 'EOF', got '}' at position 10: gt:value1}̲},{key2:value2}…or:[{key1:{KaTeX parse error: Expected 'EOF', got '}' at position 10: gt:value1}̲},{key2:value2}…in:[value集合]}})
表范围查找数据–关系–nin
db.stu.find({key:{KaTeX parse error: Expected 'EOF', got '}' at position 14: nin:[value集合]}̲}) **正则表达式** eg…regex:"^李"}})
db.stu.find({name:/李/})
db.stu.find({name:/a/i})
db.stu.find({name:{
r
e
g
e
x
:
′
a
′
,
regex:'a',
regex:′a′,options:‘i’}})
定义函数—where
db.table_name.find({KaTeX parse error: Expected 'EOF', got '}' at position 37: …rn this.age>45}}̲) **查询数据** 跳过查…group 分组:性别分组
db.stu.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:"gender"}}])
2.表达式
$sum $avg $first $last $max $min KaTeX parse error: Expected '}', got 'EOF' at end of input: …tu.aggregate([{group:{_id:“KaTeX parse error: Expected '}', got 'EOF' at end of input: …ender",sunage:{sum:”$age"}}}])
*3.管道-筛选查询 KaTeX parse error: Expected '}', got 'EOF' at end of input: …tu.aggregate([{match:{key"value"}}])
4.管道-综合运用
sb.stu.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: match:{age:{gt:20}}},{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:"gender",avgage:{
a
v
g
:
"
avg:"
avg:"age"}}}])
管道–投影(project:1或true)
案例:
db.stu.aggregate([
{KaTeX parse error: Expected '}', got 'EOF' at end of input: match:{age:{lt:50}}},
{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:"like",avgage:{
a
v
g
:
"
avg:"
avg:"age"},avgsum:{
s
u
m
:
"
sum:"
sum:"age"}}},
{KaTeX parse error: Expected 'EOF', got '}' at position 19: …ject:{avgsum:1}}̲,{sort:{avgsum:1}}
])
管道–拆分(unwind)列表
案例:
db.stu.aggregate([
{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:"gender",allname:{
p
u
s
h
:
"
push:"
push:"name"}}},
{
u
n
w
i
n
d
:
"
unwind:"
unwind:"allname"}
])
大数量的索引查询
案例:含有50w数据的data数据库
for (var i = 0;i<500000;i++){
db.data.insert(
{
_id:i,
user:“user”+i,
age:i
}
)
}
查询各个键值所用时间
//_id–56毫秒
db.tablename.find({_id:33333}).explain(‘executionStats’)
//user–274毫秒
db.tablename.find({user:“user33333”}).explain(‘executionStats’)
//age–204毫秒
db.tablename.find({age:33333}).explain(‘executionStats’)
//设置内容key为id提高查询速度
db.tablename.ensureIndex({user:1})
db.tablename.ensureIndex({age:1})
再次查询—1毫秒
db.tablename.find({user:“user33333”}).explain(‘executionStats’)
查看索引
db.tablename.getIndexes()
删除索引
db.tablename.dropIndexes(‘user_1’)//user_1为索引名,查询时,name的值
备份数据库
mongodump -h 本地ip:默认端口号 -d 数据库名 -o 要备份到的路径
mongodump -h 127.0.0.1:27017 -d admin -o /Users/32364/Desktop/beifen
查ip—192.168.56.1
cmd-ipconfig
查mongoDB默认端口号*127.0.0.1:27017
cmd->mongo->db.getMongo()
恢复数据库
mongorestore -h 127.0.0.1:27017 -d database_name --dir /数据所在路径/要恢复数据库名
导出文件(json,csv)
mongoexport -h 127.0.0.1:27017 -d six(数据库名) -c stu(表名) data.json(文件名)
mongoexport -h 127.0.0.1:27017 -d six(数据库名) -c stu(表名) data.csv -f _id,user,age,like(文件名)
导入文件
mongoimport -h 127.0.0.1:27017 -d six -c stu -file data.json
与Python的交互
1>导包pymongo
2>连接数据库服务:
mongo_py = pymongo.MongoClient()
3>创建数据库及数据集合(表)
方法1:
db = mongo_py[‘name’] **数据库名
collection = db[‘name’] **数据集合(表)名
方法2:
collection = mongo_py[“name1”][“name2”] **name1=数据库名,name2=数据集合(表)名
方法3:
collection = mongo_py.name1.mane2 **name1=数据库名,name2=数据集合(表)名
4>插入数据
步骤1:创建一个含有数据的集合{}—name3或含有多个集合的列表—name4
步骤2:用语句完成数据写入
写入一个:collection.insert_one(name3)
写入多个:collection.insert_many(name4)
写入未知个数:collection.insert(…)
5>删除数据
删除一个:
collection.delete_one({“key”:value})
删除多个:
collection.delete_many({“key”:value})
6>修改数据
修改一个:
collectiom.update_one({“key1”:value1},{“KaTeX parse error: Expected 'EOF', got '}' at position 21: …{"key2":value2}}̲)**key2&value2为…set”:{“key2”:value2}})**同上
7>查找数据
查找一个
data=collection.find_one({“key”:value})
print(data)
查找多个
datas=collection.find_many({“key”:value})
for i in datas:
print(i)
8>关闭数据库
mongo_py.close()