MangoDB基础-04

第四天

修改
update(query,update,upsert,multi)

修改器 : $set  $unset  $rename  $setOnInsert  $inc  $mul
          $min  $max
   $push  $pushAll $each  $pull  $pullAll  $position
   $pop  $addToSet $sort

数据类型  Date()   ISODate()  valueOf()
          null 的使用
Object :通过 . 取内部文档
         通过 . 取数组索引

索引创建  ensureIndex()
聚合操作  aggregate()
聚合操作符  $group  $match  $project  $limit  $skip  $sort
========================================================

固定集合

mongo中可以创建大小固定的集合,称之为固定集合,固定集合的性能出色,适用于很多场景
比如 : 日志处理,  临时缓存

特点 : 插入速度快
        顺序查询速度快
 能够淘汰早期数据
 可以控制集合空间

创建:
db.createCollection(collectionName,{capped:true,size:10000,max:1000})

size :设置固定集合的大小  kb
max : 最多能容纳多少文档

e.g.
创建一个最多包含三条文档的集合
db.createCollection('log',{capped:true,size:10,max:3})


文件存储

数据库存储文件的方式
1. 在数据库中以字符串的方式存储文件在本地的路径

优点 : 节省数据库空间
缺点 : 当数据库或者文件位置发生变化即需要相应修改数据库内容

2. 将文件已二进制数据的方式存放在数据库里

优点:文件存入数据库,数据库在,文件即不会丢失
缺点: 当文件较大时,数据库空间占用大,提取困难

mongo中  使用GridFS方法 大文件存储

GridFS : 是mongodb中大文件存储的一种方案,mongo中认为大于           16M的文件为大文件

方案解释:
在mongodb数据库中 创建两个集合 共同完成对文件的存储
fs.files : 存储文件的相关信息,比如:文件名   文件类型
fs.chunks : 实际存储文件内容,以二进制方式分块存储。将大文件分为多个小块,每块占一个空间


mongofiles -d  dbname   put   file
               数据库         要存储的文件
*如果数据库不存在则自动创建

fs.files
{ "_id" : ObjectId("5b0770c169d72e1e3a6eebda"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-05-25T02:11:13.986Z"), "length" : 8313457, "md5" : "4b39deb86dcb6ece44ef52a69dcd6e1a", "filename" : "xly.zip" }

fs.chunks
{ "_id" : ObjectId("5b0770c169d72e1e3a6eebee"), "files_id" : ObjectId("5b0770c169d72e1e3a6eebda"), "n" : 19, "data" : BinData(0,"wGTrj3......)}


获取数据库中文件
mongofiles -d grid get xly.zip

优缺点 :
优点 : 存储方便,方便数据库移植,对文件个数没有太多限制
缺点 : 读写效率低


游标

为什么使用游标
1. 防止网络拥塞,造成数据传输慢
2. 提高用户解析体验,可以后端解析

var cursor = db.class0.find()  创建游标
cursor.hasNext()  查看是否有下一个数据
cursor.next()  获取下一个数据

通过Python 操作mongodb数据库

Python ---》 mongodb编程接口  pymongo

安装
sudo  pip3  install  pymongo

操作步骤
1. 创建mongo数据库的链接对象
conn = MongoClient('localhost',27017)
2. 生成数据库对象
db = conn.stu
3. 生成集合对象
my_set = db.class0
4. 增删改差索引聚合操作


插入数据    insert()   insert_many()    insert_one()
            save()

删除数据  
remove({},multi = True)
multi  默认为True 表示删除所有符合条件的数据
       设置为False 表示只删除一条

数据查找
find()
功能 : 查找数据库内容
参数 : 同 mongo  shell   find()
返回值 : 返回一个游标 ---》 迭代器

cursor  可迭代对象属性函数

next()
count()
limit()
skip()

sort()
mongoshell --->  sort({'name':1})
pymongo  --->  sort([('name',1)])
* 进行排序时游标要确保没有被访问过

find_one()
返回值是一个字典

修改操作 

update()
参数和mongoshell 中 update相同

update_many() :匹配到多个文档时全部修改

update_one() : 只修改匹配到的第一条文档

* 变成中mongo的数据类型null 可以用Python中的 None替代

索引

创建索引
ensure_index()
create_index()
create_indexes() 创建多个索引

查看集合中的索引
list_indexes()

删除索引
drop_index()  删除某一个索引
drop_indexes() 删除所有索引


聚合操作
aggregate([])
参数 : 与mongoshell中聚合参数写法一致
返回值 : 迭代器 同find的返回值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值