mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON
- 面向集合文档存储,适合存储json形式的数据;
- 格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;
- 面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;
- 有索引的支持,查询效率更快;
- 支持复制和自动故障转移;
- 可以使用分片集群提升查询性能
应用场景:游戏、物流、社交、物联网、视频直播、大数据
/etc/yum.conf 中更改 keepcache=1 ,yum 在成功安装或更新软件包后将保存本地缓存的软件包和相关数据
vim mongodb.repo
写入:
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
也可以使用压缩包直接安装,例如:tar -xvf mongodb.tar.gz
解压或下载后出现五个相关软件包
使用rpm命令安装
rpm -ivh mongodb-*
如此,mongodb安装完成
mongodb脚本文件:/usr/lib/systemd/system/mongod.service
Mongodb配置文件:/etc/mongod.conf
#mongodb支持tab补齐
显示当前所在数据库:db
数据库创建:隐式创建,不用主动创建,使用use newDB,会自动创建不存在的数据库,只有在库中创建集合后才会保存,并使用show dbs查看到
db.dropdatabase()
#删除数据库需要进入到要删除的数据库中,dropdatabases括号内不支持传参,即不用指定参数,默认删除当前所在数据库
mongodb存储数字时默认是float(浮点型),若要以整数形式存储numberInt(数字)
例:
db.abc.insert({'username':'lisi','passwd':'123.com'})
db.集合名称.insertmany([{key:value},{key:value},{key:value}]) #多行,以数组的形式把每个文档放到一个属组中
例:
db.abc.insertMany([{'username':'zhangsan','passwd':'12684'},{'username':'wangwu','passwd':584125},{'username':'zhouwu','passwd':16564856}])
db.集合名称.find()
例:db.abc.find({'username':'lisi'})
#启用或关闭某些字段的显示,查询时加入{_id:0}则不显示”_id”,加入{_id:1}时,显示”_id”
例:只显示username字段,不显示password字段 db.abc.find({'username':'lisi'},{_id:0,password:0})
只显示password字段 db.abc.find({'username':'lisi'},{_id:0,password:1})
#key:1 显示,key:0 不显示
#当显示的key只有一个时,key:1 只显示该key及对应value,key:0 显示除了该key之外其他所有keyvalue
查询集合中有多少文档:db.集合名称.count()
例:db.abc.count()
例:db.abc.remove({'username':'lisi'}) #删除与lisi匹配的数据
db.info.update({_id:"3"}, {$set:{nickname:"jack"}})例:
db.abc.update({_id:ObjectId("657c26c26f356a5ad605f4dc")},{$set:{'username':'tom'}})
#_id为创建数据时自动生成的,也可以自己指定
db.info.update({userid:"1003"},{$set:{nickname:"tom"}},{multi:true}) #所有满足条件的文档都进行更新
db.info.update({userid:"1003"},{$inc:{likenum:NumberInt(1000)}}) #更新文档进行数值递增