MongonDB是基于分布式文件存储的数据库,当传统的关系型数据库Mysql已经不满足当下一些对数据库的需求时,这时MongonDB便可派出用场了。
目录
一、作用
MangoDB最大特点便是他的查询功能,其查询语法类似于面向对象的查询语言,可以实现大多数类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
- 模式自由
- 支持动态查询
- 面向集合存储,方面存储对象型数据
- 可以复制和故障的恢复
- 支持包含内部对象在内的完全索引
- 文件存储格式为BSON
- 自动处理数据碎片
- 使用高效的二进制数据存储(包括大型对象,如影像)
- 可以支持java、c、c++、c#、javascript、python、php、ruby、perl的驱动程序。
二、使用场景
1、数据量大;2、数据价值低且能接受少量数据丢失和不同步;3、写入操作频繁;4、查询次数高或者查询次数很低。
当对数据的高写入的负载需求时可以用到MangoDB;当要高效率存储和读取处理海量的数据时可使用MangoDB;当需要对数据库拥有高扩展性能时,可以使用MangoDB。
三、特点
· 高性能
MongoDB提供高性能的数据持久性,对嵌入式数据模型的支持减少了数据库系统上的IO活动。
支持索引查询,使查询的速度更加提高
· 高可用
MongoDB的复制工具称为副本集,它可以提供自动故障转移和数据冗余
· 高扩展
MongoDB提供了水平可扩展性作为核心功能的一部分。
分片将数据分布在一组集群的机器上。
· 丰富的查询支持
MongoDB支持丰富的查询语言,如数据聚合、文本搜索、地理空间查询等。
四、常用命令(除查询方法外)
选择数据库(如果此数据库名没创建过,会自动创建)
use 数据库名
查看所有数据库
show dbs
or
show databases
查看当前使用数据库
db
删除数据库
db.dropDatabase()
创建集合
db.createCollection("集合名称")
查看当前数据库中的集合
show tables
or
show collections
删除集合
db.集合名称.drop()
数据插入
db.数据库名.insertOne({属性名1: 数据1, 属性名2: 数据2, hiredate:new Date()})
批量插入(批量插入时如一遇到一条数据出现问题则停止插入,不过其之前的数据都能成功插入)
db.数据库名.insertMany([
{属性名1: 数据1, 属性名2: 数据2, hiredate:new Date()},
{属性名1: 数据3, 属性名2: 数据4, hiredate:new Date()}])
更新文档
db.集合名.update(
{BSON格式查询条件},
{BSON格式要更新的内容},
{
upsert: 布尔类型,(指定如果不存在update的记录,是否插入。默认false)
multi: 默认false,只更新找到的第一条记录。(如果为true,则更新查询条件下的所有记录)
}
)
修改数据(可使用修改器 $set
来实现局部修改)
db.数据库名.update(
{name: "Sam"},
{$set: {name: "lily"}}
)
批量修改(使用{multi: true})
db.数据库名.update(
{price: NumberInt(100)},
{$set: {price: NumberInt(50)}},
{multi: true}
)
//将所有属性price的值为100的改为50
删除文档(使用deleteOne() 或 deleteMany())
db.数据库名.deleteOne({_id:ObjectId('sjg3bj43hv5h34h')})