MongoDB
基于分布式文件存储的数据库由C++语言编写。B是一个介于关系数据库和非关系数据库(nosql)之间的产品。
缺点:不支持事务、不能进行多表联查
MongoDB解决mysql的"三高"问题
-
对数据库的高并发写入需求
-
对海量数据高效率存储访问需求
-
对数据库高扩展和高应用的需求
MongoDB应用场景
-
社交场景(e.g:朋友圈)
-
社游戏场景(e.g:用户得分、装备等)
-
物流场景(e.g:快递位置、状态、途径等)
-
视频场景(e.g:直播中的点赞数和互动留言等)
mysql和MongoDB的区别
-
mysql里是表,mongoDB里面集合
-
mysql存储方式是表,而mongodb存储方式是jsio文件
MongoDB与MySql存储方式比较
连接MongoDB(使用默认服务器和账号登录)
#mongo
查看MongoDB(磁盘上所有的库名)
show dbs
创建库(使用库)
use dbname
若使用的库不存在,它会自动创建该库。(创建集合[数据表] 后要(记录),集合才会真正创建)
查看当前使用的数据库
db
删除库
db.dropDatabase()
创建集合
db.createCollection("集合名")
db.createCollection("students")
查看集合
show collection / show tables
删除集合
db.集合名.drop()
在集合中插入数据
db.集合名.insert(document)
例子:
db.student.insert(
{
shuai:true,
money:true,
gf:[{stuname:'小红'},{stuname:'小紫'}]
}
)
在集合中更新数据
MongoDB在集合中查询文档(find)
MongoDB 查询文档使用 find() 方法。
find() 方法以非结构化的方式来显示所有文档。
db.collection.find(query)
pretty() 方法以格式化的方式来显示所有文档,linux下有用。
>db.col.find().pretty()
MongoDB的 And条件
db.col.find({key1:value1, key2:value2})
以上实例中类似于 WHERE 语句:WHERE key1=‘value1’ AND key2=‘value2
MongoDB的 Or条件
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
)
MongoDB的 And 与 Or 一起使用
类似常规 SQL 语句为: ‘where key1>value1 AND (key2 =
value2 OR key3 = value3)’
db.col.find({“key1": {$gt:value1}, $or: [{“key2": “value2"},{“key3": “value3"}]})
MongoDB范围条件
col"集合中 “key" 大于100,小于 200 的数据
> db.col.find({“key” : {$lt :200, $gt : 100}})
相当于RDBMS:
Select * from col where key>100 AND key<200
MongoDB的模糊查询
查询 name 包含“小"字的文档:
db.col.find({“name”:/小/})
查询 name 字段以“小"字开头的文档:
db.col.find({“name”:/^小/})
查询 name字段以“小"字结尾的文档:
db.col.find({“name”:/小$/})
MongoDB的Limit 和 Skip操作
> db.col.find().limit(NUMBER)
skip方法同样接受一个数字参数作为跳过的记录
条数。
> db.col.find().limit(NUMBER).skip(NUMBER)
MongoDB的统计
在 MongoDB 中使用count() 来统计个数
>db.col.count(【{key:value}】)
MongoDB的排序
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指
定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -
1 是用于降序排列。
>db.col.find().sort({KEY:1})
MongoDB的索引
查看索引
db.collection.getIndexes()
创建索引(单个索引,复合索引)
db.collection.createIndex(keys,option)
例如 :db.col.createIndex({username:1【, key:1】})
删除索引
db.collection.dropIndex(index)
例如:db.col.dropIndex({username:1})