mongo常用命令

连接

登录

# 连接时登陆
mongo -u 'admin' -p 'admin'
# 连接后登陆
rs0:PRIMARY> use admin
switched to db admin
rs0:PRIMARY> db.auth("admin", "admin" )
1
# url登陆
mongo mongodb://username:passwd@ip:port/dbname

查看连接数

rs:PRIMARY> db.serverStatus().connections
{
	"current" : 232,
	"available" : 50968,
	"totalCreated" : 120914,
	"active" : 1
}

当前连接数 “current” : 232
可用连接数 “available” : 50968
MongoDB一共创建线程数 “totalCreated” : 120914

备份和还原

数据备份

# dbName 代表实际数据库名称
# dumpPath 代表将要导出的数据位置
mongodump --quiet --host 127.0.0.1 --port 27017 -d dbName -c collection -o dumpPath
# 加密后备份
mongodump -d dbName -o dumpPath -u username -p password --authenticationDatabase admin

清空数据库

use dbName
db.dropDatabase();

数据导入

# dbName 代表实际数据库名称 data/path 代表每个数据库备份数据对应磁盘的实际存储位置
mongorestore -d dbName --dir data/path

导入导出

按过滤条件导出数据

mongoexport -h localhost --port 27017 -d dbName -c tableName -q '{ "createtime" : { "$gte" : ISODate("2021-05-28T00:00:00Z"), "$lt" : ISODate("2021-06-05T00:00:00Z") } }' -o ./output.json

导出指定字段

// --fields导出指定字段
mongoexport --host=127.0.0.1 --port=27017 -u root -p root1234 -d mydatabase -c user --query='{"age": 18}' --type=csv  --fields=_id,name,age,city -o /root/user.csv

查询

显示表单

show tables

等价关系(如果表名为mongo关键字,则用第一种)

db.getCollection('A')
db.A

查询当前表单有多少条数据

db.dbName.count()

查询时间范围内的数据(数目)

db.getCollection("A").find({ "createtime" : { "$gte" : ISODate("2021-05-28T00:00:00Z"), "$lt" : ISODate("2021-06-05T00:00:00Z") } }).count()

db.getCollection("A").find({"createtime":{"$gte":1636905600000,"$lte":1636991999000}}).count()

更新

批量重命名key

将A表中的key upadtetime更新为updatetime

db.getCollection("A").updateMany({}, {$rename: {"upadtetime": "updatetime"}})

复制表中一列数据到另一列

将A表中的updatetime列批量复制为createtime列

db.A.find().forEach(function(item){                 
   db.A.update({"_id":item._id},
          {"$set": {"createtime":item.updatetime}},false,true) 
})

按条件修改

db.A.updateMany({project: "60d1b11519736c32d5b5e67a", type: "area", index:""},{$set:{"index":"60d96afa7ec8600339f54e2b"}})

判断key值是否存在,存在则删除

db.getCollection('A').update({"mac":{$exists:true}},{$unset:{"mac":""}},{multi:true})

删除

删除字段(列)

db.getCollection('A').update({},{$unset:{"mac":""}},false,true)

删除某个值对应的记录(单一记录)

db.getCollection('A').remove({"key": "value"})

批量删除数组中的字段
删除robotId数组中匹配到robot的值

db.A.updateMany({}, {$pull: {robotId: { $regex: param.robot }}})

删除空数组

db.A.updateMany({robotId: []}, {$unset: {robotId: []}})

新增

新增字段

db.A.update({}, {$set: {"mac": ""}}, {multi: 1})

根据条件新增字段

db.faq.update({project: "60c809478e351427b7f972cb"}, {$set: {"faqs": ""}}, {multi: 1})

往数组中插入
upsert:没有则新增
如果想在原有数据添加,则第一个参数为原有数据的id:{_id: ObjectId()}

db.A.updateMany({}, $push: {robotId: rId}, { upsert: true })

聚合

aggregate聚合,unwind解构数组字段,group对文档分组

#根据项目计算每一个的数量,按数量从高到低
db.faq.aggregate(
    {$match:{"project" : "60c809478e351427b7f972cb", "type" : /etc/mongod.conf"area"}},
    {$unwind: "$datas"},
    {$unwind: "$datas.keys"},
    {$group: {_id: "$datas.keys", count:{$sum:1}}},
    {$sort: { count : -1} }
)
# 根据项目计算去重后总量
db.faq.aggregate(
    {$match:{"project" : "60c809478e351427b7f972cb"}},
    {$unwind:"$datas"},
    {$unwind:"$datas.keys"},
    {$group:{_id: "$datas.keys"}},
    {$group:{_id:1, count:{$sum:1}}}
)

设置密码

必须按顺序,先在mongo shell添加用户,再修改配置文件,重启mongo
命令行添加用户

use admin
db.createUser({user:"admin",pwd:"Ciot1688",roles:["root"]})

命令行出现报错:Error: couldn't add user: Use of SCRAM-SHA-256 requires undigested passwords
在这里插入图片描述

db.createUser({user:"admin",pwd:"Ciot1688",roles:["root"],mechanisms:["SCRAM-SHA-1"]})

修改配置文件/etc/mongod.conf,开启加密

security:
	authorization: enabled

在这里插入图片描述

创建数据库和集合

use test
# 创建表test
db.createCollection("test")
# 删除表test
db.test.drop()
# 删除数据库(需要先use test进入该数据库)
db.dropDatabase()

问题定位

mongostate

mongotop

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是常用的MongoDB Shell命令: 1. 数据库操作 - `show dbs`:显示所有数据库 - `use <database_name>`:切换到指定的数据库,如果不存在则创建 - `db.dropDatabase()`:删除当前数据库 2. 集合操作 - `db.createCollection("<collection_name>")`:创建集合 - `db.<collection_name>.drop()`:删除集合 - `show collections`:显示当前数据库中所有的集合 3. 文档操作 - `db.<collection_name>.insert(<document>)`:向指定集合中插入一个或多个文档 - `db.<collection_name>.find()`:查询指定集合中的所有文档 - `db.<collection_name>.find(<query>)`:根据查询条件查询指定集合中的文档 - `db.<collection_name>.findOne(<query>)`:根据查询条件查询指定集合中的第一个匹配的文档 - `db.<collection_name>.update(<query>, <update>)`:根据查询条件更新指定集合中的文档 - `db.<collection_name>.remove(<query>)`:根据查询条件删除指定集合中的文档 4. 索引操作 - `db.<collection_name>.createIndex(<fields>, <options>)`:创建索引 - `db.<collection_name>.getIndexes()`:显示集合中所有的索引 - `db.<collection_name>.dropIndex(<index>)`:删除指定的索引 5. 用户操作 - `db.createUser(<user>)`:创建用户 - `db.updateUser(<user>)`:更新用户信息 - `db.changeUserPassword(<username>, <password>)`:修改用户密码 - `db.dropUser(<username>)`:删除用户 6. 其他操作 - `db.stats()`:显示当前数据库的统计信息 - `db.version()`:显示MongoDB的版本信息 - `db.shutdownServer()`:关闭MongoDB服务器 以上是常用的MongoDB Shell命令,更多命令可以参考MongoDB官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值