- 优点:高可扩展性、分布式计算、低成本、灵活架构、半结构化数据、简化关联关系
- 缺点:没有标准化、有限查询、不直观
- 列存储:**Hbase、**Cassandra、Hypertable
- 文档存储:**MongoDB、**CouchDB
- k-v存储:TokyoCabinet、BerkeleyDB、**MemcacheDB、redis**
- 对象存储:Neo4J、Versant
- Xml数据库:BerkeleyDB、BaseX
注:黑色加粗的为常用的数据库
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
优点:
{“name”:”admin”, “gender”:”男”}
{“name”:”admin”, “gender”:”男”}
{“name”:”manager”, “age”:23}
{“name”:”manager”, “phone”:”16868686868”}
回顾一下MySQL在ubuntu的安装
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
#安装过程中会提示设置密码什么的,注意设置了不要忘了
sudo netstat -tap | grep mysql
通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。
mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。
然后通过 show databases; 就可以查看当前的数据库。
直接下载msi文件或者点击All Verison Binaries下载都行
我这里用的是zip安装,安装完毕后,
当前所在磁盘目录下创建data文件夹
data文件夹中创建db文件夹和log文件夹
mongod --dbpath d:/data/db
启动mongoDB数据库
mongo
**,用于数据库操作打开一个新的窗口,用于数据库操作
MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装。
1 . 打开终端,输入以下命令:
sudo apt-get install mongodb
2 . 安装完成后,在终端输入以下命令查看MongoDB版本:
mongo -version
显示版本信息,即安装成功
3 . 启动mongo数据库
sudo mongo
启动mongo数据库
PyMongo是Mongodb的Python接口开发包,是使用python和Mongodb的推荐方式。
用Python操作MongoDB需要通过PyMongo,输入命令安装
pip install pymongo 默认安装
pip install pymongo==2.8 安装指定版本
pip install –upgrade pymongo 升级PyMongo
安装成功
命令运行成功无报错
- **db:**查看当前指向的数据库
- **show dbs:**查看当前所有的数据库
- **use <数据库名称>:**指向一个数据库 Use数据库不会创建数据库,如果操作数据会自动创建数据库
-
- **show collections:**查看当前数据库所有集合
- **db.createCollection(<c\_name> [, options]):**创建一个集合
- **db.<集合名称>.drop():**删除指定的集合
show collections 查看当前库中所有的集合,后面的collections不要加括号
db.createCollection(name, [optinos])
创建一个名称为name的集合,后面的options表示创建的附带选项
db.createCollection(“emp”):创建一个名称为emp的名称的集合
db.createCollection(“dept”, {“capped”: true, size: 5}):capped默认false
表示不设置上限,true表示设置上限需要设置size参数~表示达到上限时会将之前的数据覆盖
db.<集合名称>.insert(文档)
db.<集合名称>.find()
查询指定集合的数据db.student.insert({name:”jerry”, gender:”男”})
db.student.insert({_id:”1”, name:”tom”, gender:”女”, age:18})
db.<集合名称>.update(<query>, <update>,[multi:<boolean>])
$opration
#更新符合条件的文档
db.student.update({name:”tom”}, {name:”jerry”})
#更新符合条件的文档中符合条件的域
db.student.update({name:”tom”}, {$set:{name:”jerry”}})
#更新符合条件的多行文档及对应的域
db.student.update({}, {$set:{name:”donghua”}}, {multi:true})
- **语法:**`db.<集合名称>.save(文档)`
- **特征:**[ \_id ]如果数据不存在就添加,如果数据存在修改
- **语法:**`db.<集合名称>.remove(<query>, {justone:<boolean>})`
- **参数query:**删除文档的条件
- **参数justOne:**设置为true或者1,删除一条;默认false删除多条
默认判断,无运算符
$lt:little~小于 <
$lte:little or equals~小于等于 <=
$gt:granter~大于 >
$gte:granter or equals~大于等于 >=
#查询名称为jerry的学生
db.student.find({name:”jerry”})
#查询年龄已经适婚年龄的学员
db.student.find({age:{$gte:20}})
#查询年龄已经适婚年龄并且性别为女的学员
db.student.find({age:{$gte:20}, gender:”女”})
#查询年龄大于18或者性别为男的学员
db.student.find({$or:[{age:{$gt:18}, {gender:”女”}]})
#查询年龄在18或者20的学员
db.student.find({age: {$in:[18,20]}})
#查询年龄不是18 的学员
db.student.find({age: {$nin : [20]}})
<find>.limit(count)
<find>.sort({字段:1/-1, ...})
db.student.find().sort({name:1})
1.表示升序排列 -1表示降序排列,可以指定多个字段
<find>.count()
db.<集合名称>.count({条件})
两种操作方式
1.查询结果,通过count()统计数据
2. 通过count()直接添加条件统计数据
db.<集合名称>.distinct(“去重域名称”, {条件})
查询数据列表中,所有的年龄分布情况
db.student.distinct(“age”, {})
#隔n个数据查询m个数据
db.hero.find().pretty().limit(m).skip(n)