什么是mongoDB?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能。
- MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
- MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
mongoDB 优缺点
优点
- 文档结构的存储方式,能够更便捷的获取数据
- 内置GridFS,支持大容量的存储
- 海量数据下,性能优越
- 动态查询
- 全索引支持,扩展到内部对象和内嵌数组
- 查询记录分析
- 快速,就地更新
- 高效存储二进制大对象 (比如照片和视频)
- 复制(复制集)和支持自动故障恢复
- 内置 Auto- Sharding 自动分片支持云级扩展性,分片简单
- MapReduce 支持复杂聚合
- 商业支持,培训和咨询
缺点
- 不支持事务操作
- MongoDB 占用空间过大 (不过这个确定对于目前快速下跌的硬盘价格来说,也不算什么缺点了)
- MongoDB没有如MySQL那样成熟的维护工具
- 无法进行关联表查询,不适用于关系多的数据
- 复杂聚合操作通过mapreduce创建,速度慢
- 模式自由,自由灵活的文件存储格式带来的数据错
- MongoDB 在你删除记录后不会在文件系统回收空间。除非你删掉数据库。但是空间没有被浪费
安装与使用
- 导入公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
- 创建列表文件
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
- 更新仓库
sudo apt-get update
- 安装服务
sudo apt-get install -y mongodb-org=4.0.3 mongodb-org-server=4.0.3 mongodb-org-shell=4.0.0 mongodb-org-mongos=4.0.3 mongodb-org-tools=4.0.3
- 启动服务
service mongod start
- 查看日志
less /var/log/mongodb/mongod.log
修改port
,请update /etc/mongod.conf
文件中的 net port
MongoDB 使用
1.连接 MongoDB
mongo --host 127.0.0.1:27017
2.MongoDB创建数据库
语法 use DATABASE_NAME
创建一个newTest
数据库,使用db查看
>use newTest
switched to db newTest
>db
newTest
>show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
可以发现我们刚刚新建的newTest
数据并没有显示出来,需要我们插入一些数据
>db.newTest.insert({ "id": "1", "name": "测试mongo" })
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
newTest 0.000GB
3.MongoDB 删除数据库
MongoDB
删除数据库的语法
db.dropDatabase()
实例
以删除newTest
为例
>show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
newTest 0.000GB
>use newTest
switched to db newTest
>db.dropDatabase()
{ "dropped" : "newTest", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
看到已经把newTest
删除
4.MongoDB 插入文档
MongoDb
使用insert()
或save()
方法向集合中插入文档,语法: db.COLLECTION_NAME.insert(document)
以下例子将存储到MongoDB
的数据库newTest
集合中:
>use newTest
switched to db newTest
> db.col.insert({ "title": "测试mongodb集合", "content": "这是一个小小小小鸟" })
WriteResult({ "nInserted" : 1 })
>db.col.find()
{ "_id" : ObjectId("5c73a2f55cda662e78291d15"), "title" : "测试mongodb集合", "content" : "这是一个小小小小鸟" }
当然也可以定义变量
,插入文档也可以使用db.col.save()
,如果不指定_id
字段,save() 同insert()方法; 如果指定_id
则会更新该_id
的数据;
插入单条和多条文档的语法
db.collection.insertOne()
向指定集合插入单条文档数据
db.collection.insertMany()
向指定集合插入多条文档数据
5.MongoDB 删除文档
MongoDB
的remove()
函数已经过时
官方推荐使用deleteOne ()
和deleteMany ()
实例
删除集合下全部文档
>db.col.deleteMany({})
{ "acknowledged" : true, "deletedCount" : 1 }
按条件删除
>db.col.deleteMany({"title": "测试mongodb集合"})
{ "acknowledged" : true, "deletedCount" : 1 }
或者
>db.col.deleteOne({"title": "测试mongodb集合"})
{ "acknowledged" : true, "deletedCount" : 1 }
6.MongoDB 查询文档
MongoDB
查询文档使用find()
方法
db.collection.find(query, projection)
-
query
: 可选,使用查询操作符指定查询条件 -
projection
: 可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
pretty()
方法以格式化对方式展示所有文档
> db.col.insert({age:29, gender: '男', address: '黑龙江漠河' })
> db.col.find()
{ "_id" : ObjectId("5c74a6e0596eac65f1b13444"), "age" : 29, "gender" : "男", "address" : "黑龙江漠河" }
> db.col.find().pretty()
{
"_id" : ObjectId("5c74a6e0596eac65f1b13444"),
"age" : 29,
"gender" : "男",
"address" : "黑龙江漠河"
}
7.MongoDB 条件操作符
条件操作符用于比较两个表达式,并从MongoDB
集合中获取数据
MongoDB
条件操作符有:
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
(==) 等于- $eq
(!=) 不等于- $ne
MongoDB
的(>
)操作符$gt
db.col.find({age: {$gt: 18}})
等同于sql
语句
select * from col where age > 18
;
第一次记录学习文档,先从抄写开始,本文参考多个文档,并同步实践操作记录,望能给大家提供微薄的帮助