Ubuntu下的MongoDB的安装和使用

什么是mongoDB?

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能。

  • MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
  • MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

mongoDB 优缺点

优点

  • 文档结构的存储方式,能够更便捷的获取数据
  • 内置GridFS,支持大容量的存储
  • 海量数据下,性能优越
  • 动态查询
  • 全索引支持,扩展到内部对象和内嵌数组
  • 查询记录分析
  • 快速,就地更新
  • 高效存储二进制大对象 (比如照片和视频)
  • 复制(复制集)和支持自动故障恢复
  • 内置 Auto- Sharding 自动分片支持云级扩展性,分片简单
  • MapReduce 支持复杂聚合
  • 商业支持,培训和咨询

缺点

  • 不支持事务操作
  • MongoDB 占用空间过大 (不过这个确定对于目前快速下跌的硬盘价格来说,也不算什么缺点了)
  • MongoDB没有如MySQL那样成熟的维护工具
  • 无法进行关联表查询,不适用于关系多的数据
  • 复杂聚合操作通过mapreduce创建,速度慢
  • 模式自由,自由灵活的文件存储格式带来的数据错
  • MongoDB 在你删除记录后不会在文件系统回收空间。除非你删掉数据库。但是空间没有被浪费

安装与使用

  1. 导入公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
  1. 创建列表文件
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
  1. 更新仓库
sudo apt-get update
  1. 安装服务
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
  1. 启动服务
service mongod start
  1. 查看日志
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 删除文档
MongoDBremove()函数已经过时
官方推荐使用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;

第一次记录学习文档,先从抄写开始,本文参考多个文档,并同步实践操作记录,望能给大家提供微薄的帮助

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容

  • 1. MongoDB 简介 MongoDB是一个可扩展的高性能,开源,模式自由,面向文档的NoSQL,基于分布式文...
    rhlp阅读 1,106评论 0 3
  • NoSql数据库优缺点 在优势方面主要体现在下面几点: 简单的扩展 快速的读写 低廉的成本 灵活的数据模型 在不足...
    dreamer_lk阅读 2,712评论 0 6
  • 一、MongoDB简介 1.概述 ​ MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WE...
    郑元吉阅读 976评论 0 2
  • 那是个晴朗高照的日子,窗外的枝条竞相争春,阳光一路欢欢洒洒的落在行人身上,没有一丝疲惫,没有一点春困,在春的暖阳里...
    核桃银杏阅读 286评论 0 0
  • 以前阳光的我,也有小小的心情。
    余念一生阅读 230评论 7 8