操作MongoDB的命令
1.docker 进入mongoDB并验证用户权限
docker exec -ti mongodb /bin/bash
mongo -u 'root' -p 'root' --authenticationDatabase 'admin'
2.输入help命令可查看操作命令
3.命令演示–主要演示操作document (数据记录行/文档)部分
3.1 新建一个collection(集合/数据库)
use zhangmr
使用use name命令,如果collection存在,则切换到指定name的collection,如果没有,则新建collection
show dbs查看命令,发现并没有出现新建的collection
在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
3.2 插入命令
3.2.1 db.mycoll.insert(obj)
db.zhangmr.insert({"zhangmr-insert":"insert_0"})
3.2.2 db.mycoll.insertOne(obj)
db.zhangmr.insertOne({"zhagnmr-insertOne":"insert_1"})
3.2.2 db.mycoll.insertMany([objs])
db.zhangmr.insertMany([{"zhagnmr-insertMany":"insert_2"},{"zhangmr-Many":"insert_3"},{"zhangmr-insertMany":"insert_4"}])
3.3 更新命令
3.3.1 db.mycoll.update(query, object[update , upsert_bool, multi_bool])
query:update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
upsert_bool: 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi_bool: 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
db.zhangmr.update({"name":"zhangmr测试"},{"name":"zhangmrUpdate"})
db.zhangmr.update({"name":"zhangmr_zero"},{"name":"zhangmrUpdate_addnew"})
db.zhangmr.update({"name":"zhangmr_zero"},{"name":"zhangmrUpdate_addnew"},true)
先批量插入10条数据
for(var i =0;i<10;i++){db.zhangmr.insert({"name":"批量更新","val":i+1})}
db.zhangmr.update({"name":"批量更新"},{"name":"批量更新--1"}) //默认更新一条
db.zhangmr.update({"name":"批量更新"},{$set:{"name":"批量更新??","val":'update_0'}},false,true) //更新多条
multi参数需要跟$参数一起使用,否则会报错
1.$inc: 引用增加
db.zhangmr.update({"name":"批量更新"},{$inc:{"val":1}},false,true) # 在原基础上给所有val+1
db.zhangmr.updateMany({"name":"批量更新"},{$inc:{"val":1}}) # 在原基础上给所有val+1
- $set: 修改数据 (key不存在就添加)
db.zhangmr.update({"name": 'zhangmrUpdate'}, {$set: {"name1": 'zhangmr'}})
- $unset: 强制删除Field
db.zhangmr.update({"name":"zhangmrUpdate"},{$unset:{"name":""}})
db.zhangmr.update({"name":"批量更新??"},{$unset:{"val":""}}) //更新一条
db.zhangmr.updateMany({"name":"批量更新??"},{$unset:{"val":""}}) //更新多条
或者
db.zhangmr.updateMany({"name":"批量更新??"},{$unset:{"val":""},fasle,true}) //更新多条
- Array操作
- $push: 增加操作 (前提: 增加的字段 key: value 中 value 类型为 Array)
db.zhangmr.insert({"name":[1,2,3]})
db.zhangmr.insert({"array":[{"name":"name_0"},{"age":18}]})
db.zhangmr.insert({"arrayList":[{"name":"name_0","age":18},{"name":"name_1","age":18}]})
db.zhangmr.update({"key":"123"},{$push:{"arrayList":{"addKet":123}}})
在数组的某一个元素内加上一个key
db.zhangmr.update({"key":"123"},{$set:{"arrayList.0.key":"addOne"}})
$pull: 指定删除Array中的某一个元素
db.zhangmr.update({"key":"123"},{$pull:{"arrayList":{"age":18}}})
db.zhangmr.update({"key":"123"},{$pop:{arrayList:1}}) //删除最后一个
db.zhangmr.update({"key":"123"},{$pop:{arrayList:-1}})//删除第一个
3.4 db.zhangmr.remove(query) 删除记录
db.zhangmr.remove({"_id":{"$gt":ObjectId("617fe0a13402cc07070ebfc6"),"$lt":ObjectId("617fe0a13402cc07070ebfcf")}})
db.zhangmr.remove({"array.0.name":"name_0"})
db.zhangmr.remove({"name":{$elemMatch:{$eq:1}}})
db.zhangmr.remove({"_id":ObjectId("617fe0a13402cc07070ebfcf")})