学习Python的日子MongoDB

MongoDB
NoSQL
NoSQL,全名为Not Only SQL,指的是非关系型的数据库,随着访问量的上升,网站的数据库性能出现了问题,于是nosql被设计出来
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
分类
列存储
Hbase
Cassandra
Hypertable
特点
顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储
MongoDB
CouchDB
特点
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储
Tokyo Cabinet / Tyrant
Berkeley DB
MemcacheDB
Redis
特点
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储
Neo4J
FlockDB
特点
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储
db4o
Versant
特点
通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库
Berkeley DB XML
BaseX
特点
高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。
MongoDB
官方网站
https://www.mongodb.com/
简介
1)MongoDB 是一个基于分布式,文件存储的NoSQL数据库。
2)由C++语言编写,运行稳定,性能高,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
3)MongoDB是为快速开发互联网web应用而设计的数据库系统。
4)MongoDB的设计目标是极简单、灵活、作为Web应用栈的一部分。
5)MongoDB的数据模型是面向文档的,所谓文档是一种类似JSON的结构,简单理解MongoDB这个数据库中存在的是各种各样的Json.
6)MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对 组成。
MongoDB文档类似于JSON对象,字段值可以包含其他文档、数组、文档数组。
数据库操作
创建数据库
数据库默认是不存在的,但是当我们切换的时候,可以任意切换不存在的数据库,只有在我们创建完第一个集合的时候,这个数据库才会真正的被创建,才会被查看到。
use test1
db.createCollection(‘students’)
删除数据库
首先,我们需要切换到想要删除的数据库当中,然后使用命令默认删除的是当前所在的数据库
db.dropDatabase()  
删除当前使用的数据库
显示所有数据库
show dbs
show databases
显示当前所用数据库
db  
切换数据库
use切换
集合collection的操作
默认创建的集合 不限长
创建集合  
db. createCollection(‘students’)
删除集合
db.students.drop()
查看所有集合
show collections
文档document的操作

db.students.insert({name:’赵丽颖’,age:30,gender:true})
db.students.insert([{name:’赵丽颖’,age:30},{name:’杨幂’,age:31}])

db.students.remove({name:’ 赵丽颖},{justOne:true})
删除选中的一条,如果第二个参数justOne没有说明,默认删除选中的多个
db.students.remove({})
删除所有的文档数据,如果条件没有,那么就删除所有的,但是{}必须要写

db.students.update({},{name:’小赵’})
更新一条数据,并且破坏文档结构,最后数据就是{name:’小赵’}了,如果原来数据是{name:’赵丽颖’,age:30},那么age这个键值被破坏,不再存在,并且只修改一条数据,不给条件,默认获取第一条数据去修改
如果想要不破坏文档,只是修改姓名,年龄不变,那么需要用到$set
db.students.update({},{$set:{name:’小赵’}),这样的操作不会破坏原来文档结构
如果想要修改多条数据
db.students.update({name:’赵丽颖’},{$set:{name:’小赵’}},{multi:true})

db.students.find() 查找所有文档
db.students.findOne()找到符合条件的一个
db.students.find({name:’zhaoliying’})
建立定长集合
db.createCollection(‘stu’,{capped:true,size:10,max:3})
size:是集合的空间大小,如果超过这个集合的大小就会覆盖最前面的
max:是文档的个数限制,如果集合当中文档超过这个大小,也会覆盖前面的
集合的查找
比较运算符
$gt $gte $lt $lte $ne 
大于或等于
$gte
小于或等于
$lte
小于
$lt
大于
$gt 
等于
$eq
不等于
$ne
逻辑运算符
$and  $or
逻辑与
默认是逻辑与的关系,多个条件直接用逗号连接
逻辑或
使用$or
and和or一起使用
db.sub.find({$or:[{count:{$gte:10}},{title:'web'}],count:14})
范围运算符
$in  $nin
$nin 不在某个范围内
$in 在某个范围内
限制
$limit
方法limit():用于读取指定数量的文档
db.集合名称.find().limit(NUMBER)
跳过
$skip 
方法skip():用于跳过指定数量的文档
db.集合名称.find().skip(NUMBER)
db.sub.find().skip(2).limit(3)

猜你喜欢

转载自blog.csdn.net/qq_42240071/article/details/80500477
今日推荐