mongo 的安装与使用

MongoDB安装

官方下载地址


RPM包列表

包名称命令集说明
mongodb-org-server-4.0.4-1.el6.x86_64.rpmmongod守护进程
mongodb-org-mongos-4.0.4-1.el6.x86_64.rpmmongos分片群集的控制器和查询路由器
mongodb-org-shell-4.0.4-1.el6.x86_64.rpmmongo交互式的MongoDB Shell
mongodb-org-tools-4.0.4-1.el6.x86_64.rpmmongodump,mongoexport,mongofiles,mongoimport,mongorestore,mongostat,mongotop运维工具
命令说明
mongodump数据备份
mongorestore数据恢复
mongoexport导出工具
mongoimport导入工具
mongofilesGridFS文件系统
mongostatmongodb监控-整体
mongotopmongodb监控-实时

配置yum源-安装

[root@c61 yum.repos.d]# cat mongodb.repo 
[mongodb-org-3.6] 
name=MongoDB Repository 
baseurl=https://mirrors.aliyun.com/mongodb/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ 
gpgcheck=1 
enabled=1 
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc 
[root@c61 yum.repos.d]# yum install -y mongodb-org #安装服务 
[root@c61 yum.repos.d]# systemctl start mongod #启动服务
[root@c61 mongodb]# systemctl enable mongod #添加开机启动项

使用

[root@i-jq96wmgl ~]# mongo --host=127.0.0.1 --port=27017
MongoDB shell version v3.6.19
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("fb0fcfff-e743-42e2-aeca-a8627e047af1") }
MongoDB server version: 3.6.19
Server has startup warnings:
2020-08-31T10:46:58.523+0800 I STORAGE  [initandlisten]
2020-08-31T10:46:58.523+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-08-31T10:46:58.523+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten]
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten]
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten]
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten]
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-08-31T10:46:59.249+0800 I CONTROL  [initandlisten]

> db.help() #显示数据库操作命令,里面有很多的命令
....
....
....

> show dbs  #显示数据库列表
admin   0.000GB
config  0.000GB
local   0.000GB

> use webapp  #切换当前数据库,如果数据库不存在则创建数据库。
switched to db webapp

>db.dropDatabase() #删除数据库
{ "ok" : 1 }

#查看当前数据库
> db.stats()
{
	"db" : "webapp",
	"collections" : 1,
	"views" : 0,
	"objects" : 3,
	"avgObjSize" : 52,
	"dataSize" : 156,
	"storageSize" : 16384,
	"numExtents" : 0,
	"indexes" : 1,
	"indexSize" : 16384,
	"fsUsedSize" : 3638845440,
	"fsTotalSize" : 21002534912,
	"ok" : 1
}

> db
webapp

#集合和数据库一样,无需手动创建,也无法创建,需要保存数据记录,可以直接通过
#db.xxx.insert(),db.xxx.save()命令来保存数据,这样,数据表就自动创建了。

> db.user.insert( {"name" : "zhangsan", "age" : 23})
WriteResult({ "nInserted" : 1 })
> db.user.save({ "name" : "lisi", "age" : 18})
WriteResult({ "nInserted" : 1 })
> db.user.save({ "name" : "wangwu", "age" : 20})
WriteResult({ "nInserted" : 1 })

#集合查询:db.xxx.find(),这是直接查询所有记录,可以通过{}来指定条件范围。db.user.find({})
> db.user.find()
{ "_id" : ObjectId("5f4cbfa3638d80132cc0fe87"), "name" : "zhangsan", "age" : 23 }
{ "_id" : ObjectId("5f4cbfb9638d80132cc0fe88"), "name" : "lisi", "age" : 18 }
{ "_id" : ObjectId("5f4cbfc7638d80132cc0fe89"), "name" : "wangwu", "age" : 20 }


#显示当前数据库中的集合(类似关系数据库中的表)
> show tables
user
>  show collections
user

> db.user.help() #显示集合操作命令
....
....
....


#删除所有数据:db.xxx.remove({})这样就删除了所有记录。现在不推荐使用
#remove,可以使用removeOne(),removeMany({}),如果删除指定的数据,
#可以在{}中指定删除记录的条件。这个条件和查询条件是一样的。不能直接使用
#db.user.remove(),否则会报错,如果选择全部删除,需要加上{},db.user.remove({})。
> db.user.remove({})
WriteResult({ "nRemoved" : 3 })


#修改数据:和删除一样,修改时需要指定记录范围,如果不指定,那么就是全部修改。
#如下:db.channel.update({},{$set:{'entityStatus':'OK'}},{multi:true});
#将channel表中所有的实体状态设置为OK,同时,记录有多条,指定multi:true,支持批量操作。
> db.user.find()
{ "_id" : ObjectId("5f4cbfa3638d80132cc0fe87"), "name" : "zhangsan", "age" : 23 }
{ "_id" : ObjectId("5f4cbfb9638d80132cc0fe88"), "name" : "lisi", "age" : 18 }
{ "_id" : ObjectId("5f4cbfc7638d80132cc0fe89"), "name" : "wangwu", "age" : 20 }

> db.user.update({},{$set:{age:30}})  #修改第一个匹配到的数据
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find()
{ "_id" : ObjectId("5f4cbfa3638d80132cc0fe87"), "name" : "zhangsan", "age" : 30 }
{ "_id" : ObjectId("5f4cbfb9638d80132cc0fe88"), "name" : "lisi", "age" : 18 }
{ "_id" : ObjectId("5f4cbfc7638d80132cc0fe89"), "name" : "wangwu", "age" : 20 }

> db.user.update({age:20},{$set:{age:30}})  #增加匹配条件
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find()
{ "_id" : ObjectId("5f4cbfa3638d80132cc0fe87"), "name" : "zhangsan", "age" : 30 }
{ "_id" : ObjectId("5f4cbfb9638d80132cc0fe88"), "name" : "lisi", "age" : 18 }
{ "_id" : ObjectId("5f4cbfc7638d80132cc0fe89"), "name" : "wangwu", "age" : 30 }

> db.user.update({},{$set:{age:18}},{multi:true}) #更新所有匹配到的数据
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 2 })
> db.user.find()
{ "_id" : ObjectId("5f4cbfa3638d80132cc0fe87"), "name" : "zhangsan", "age" : 18 }
{ "_id" : ObjectId("5f4cbfb9638d80132cc0fe88"), "name" : "lisi", "age" : 18 }
{ "_id" : ObjectId("5f4cbfc7638d80132cc0fe89"), "name" : "wangwu", "age" : 18 }


#db.user.find().pretty(),类似mysql \G 按照行来展示记录的字段、字段值
> db.user.find().pretty()
{
	"_id" : ObjectId("5f4cbfa3638d80132cc0fe87"),
	"name" : "test",
	"age" : 18
}
{
	"_id" : ObjectId("5f4cbfb9638d80132cc0fe88"),
	"name" : "lisi",
	"age" : 18
}
{
	"_id" : ObjectId("5f4cbfc7638d80132cc0fe89"),
	"name" : "wangwu",
	"age" : 18
}

# 数据过多,我们只查询几个数据
> db.user.find().limit(10)



> db.cloneDatabase("127.0.0.1") #将指定机器上的数据库的数据克隆到当前数据库
> db.copyDatabase("mydb", "temp", "127.0.0.1") #将本机的mydb的数据复制到temp数据库中
> db.repairDatabase() #修复当前数据库
> db.getName() #查看当前使用的数据库,也可以直接用db
> db.stats() #显示当前db状态
> db.version() #当前db版本
> db.getMongo()  #查看当前db的链接机器地址
> db.serverStatus() #查看数据库服务器的状态

参考文档:https://www.jianshu.com/p/24e88fbb0574
推荐阅读:https://www.cnblogs.com/pyedu/p/10313148.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值