mongodb数据库(下)

'''
7.条件查询
db.集合名.find()
db.集合名.findOne(查询条件) 单条查询
db.集合名.find().pretty()  对查询结果美化


比较运算
$lt 小于
$lte 小于等于
$gt 大于
$gte 大于等于
$ne 不等于
db.集合名.find({key:{$lt:n}})


逻辑运算
and:
db.集合名.find($and:[{key1:'value1'},{key2:'value2'}])  可以直接  db.集合名.find({key1:'value1',key2:'value2'})
or:
db.集合名.find($or:[{key1:'value1'},{key2:'value2'}])
混合
db.colname.find({$or:[{key:value,key1:value1},key2:value2]})


范围运算
in:
db.集合名.find({key:{$in:[n1,n2,n3]}})
not in:
db.集合名.find({key:{$nin:[n1,n2,n3]}})


正则:只能用于字符串
db.集合名.find({key:/正则条件/})
db.集合名.find({key:{$regex:'正则条件'}})


自定义条件 js的函数func
db.集合名.find({$where:function(){return this.age == 18}})
'''




'''
8.find后的附加操作
db.集合名.find().skip(n) 略过的条数
db.集合名.find().limit(n) 限制返回条数


投影操作:限制返回的字段内容,格式  查询所有,name为true返回name,_id默认返回,_id为false,就不返回,所以结果是只展示所有的name
db.集合名.find({},{name:1,_id:0}) 


db.集合名.find().sort({age:1}) 以age排序 升序:1  降序:-1


db.集合名.find(条件).count() 统计
db.集合名.count(条件)


db.集合名.distinct(域名)  即字段名,以哪个字段来去重
'''




'''
9.聚合运算    管道$
db.集合名.aggregate({$group:{_id:'$gender'}})
分组,以gender来分组,并且作为id


db.集合名.aggregate({$group:{_id:'$gender',counter:{$sum:1}}})    
分组,以gender来分组,并且作为id,然后 数量(每个性别的人数,counter可以随便起),$sum求和 : 1 (1的比例来求和,即有1条数据为1个)
其实形成了一张虚拟的表,有两个字段 主键_id和counter


db.集合名.aggregate({$group:{_id:'$gender',counter:{$sum:1},sum_age:{$sum:'$age'},avg_age:{$avg:'$age'}}})  
虚拟表:4个字段 以gender分组 主键_id ,每个组的人数counter,年龄总和sum_age,平均年龄avg_age  


db.集合名.aggregate({$group:{_id:'$gender',name_list:{$push:'$name'}}})
虚拟表:2个字段 以gender分组,主键_id,name_list字段:把分组后的每个名字push到相对应的位置


db.集合名.aggregate({$match:{age:18}})
管道$match 同find就是查询,但是可以有后续的附加
查询年龄是18的


db.集合名.aggregate({$match:{name:{$regex:'黄'}}},{$project:{name:1}})
管道$project  就是投影操作:限制返回的内容
查找名字含有黄的,然后投影只返回name字段,_id字段是默认返回的


db.集合名.aggregate({$limit:5},{$skip:2})
$limit(限制) 和 $skip(略过) 和find的后续操作含义相同,但是注意先后顺序对结果的影响


db.集合名.aggregate({$sort:{age:1}}) 
$sort排序  1:升序  -1:降序


db.集合名.aggregate({$unwind:'$size'})
$unwind 拆分列表      拆分size   size = ['M','S','L']
'''




'''
10.索引
查看索引
db.集合名.getIndexes()


创建索引
db.集合名.ensureIndex({key:1},{background:true})
以 key 来创建索引 1:升序  background在后台来创建
删除索引 db.集合名.dropIndex({key:1}) 以谁创建的就以谁删除,并且顺序也要带上 


以索引来查询
db.集合名.find(查询条件).hint(创建索引的条件{key:1 })
'''




'''
11.备份与恢复 在终端
备份
mongodump -h ip -d 备份数据库名 -o 指定目录
恢复
mongorestore -h ip -d 恢复数据库名 --dir 从哪个文件夹恢复


导入与导出  在终端
导出
mongoexport  -h ip -d 导出的数据库 -c 导出的表  -o filename.json (如果使用表格--type csv 指明字段的标题-f name,age,gender )
将指定的集合中的数据导出成文件
导入
mongoimport -d dbname -c colname filename 
'''




'''
12.python交互


安装 pip install pymongo


from pymongo import MongoClient
客户端对象: 链接mongod
数据库对象: use 数据库
集合对象: 选择了集合
游标对象: 查找之后获得的对象
客户端对象
client = MongoClient(host=ip,port=port)  注意是host
client.database_names()  获取数据库列表


数据库对象
db = client.数据库名字  或者  client[数据库名字]
db.collection_names()  获取集合列表
db.create_collection(集合名)   创建集合
db.drop_collection(集合名)     删除集合
db.name     查看所属数据库
db.authenticate(user,pwd)    权限认证


集合对象
col = db.集合名 或者 db[集合名]
col.name  查看所属的集合名
插入
col.insert_one(data) 插入单条数据:字典
col.insert_many(data) 插入多条数据:字典列表
col.insert(data)   单,多都可
删除
col.delete_one(条件) 删除一条
col.delet_many(条件) 删除多条
col.remove(query,multi) 根据条件删除,multi决定数量
修改
col.update_one(query,update,upsert) 根据query查询,更新成update,存在就修改不存在就插入
col.update_many(query,update,upsert) 修改多条




游标对象 只有查询之后产生
col.find(条件)  返回游标对象,可遍历   <pymongo.cursor.Cursor object at 0x108aef320> 
col.find_one(条件)  返回一条数据 




'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值