mongodb的常用基础命令及操作

连接查看数据库

     打开cmd窗口,输入mongo进入客户端模式

基础命令

> monodb  // 进入客户端模式
> show dbs // 查看所有数据库 > show collections // 查看所有集合 > use test //use <数据库名> 进入test数据 如果没有则会创建,如果有直接进入,如果没有往数据库内插入文档,则不会存在该数据库


插入文档

// 添加数据
db.test.insert({name:'aaa',age:18,sex:'man'})  //向当前数据库的test集合插入文档,插入文档内容为  {name:'aaa',age:18,sex:'man'},其中db表示进入数据库时的当前数据库
db.test.insert([{name:''张楚岚,age:18,sex:'man'},{name:'王也',age:25,'sex':'man','job':'道长',desr:'当不好就要回去继承家产的道长'}]) //向test中插入多条数据

 

常见查询语句 


// 查询
db.test.find() // 查找当前数据库的test集合的所有文档
db.test.find({name:'aaa'}) // 条件查询
db.test.findOne({name:'aaa'}) //返回满足条件的第一条数据
db.test.findMany({name:'aaa'}) //返回满足条件的所有数据
db.test.find({age:{$gt:18,$lt:25}}) //返回age大于18小于25的数据 (其中关键字还有大于等于$gte,小于$lt,小于等于$lte,包含$all等)
db.test.find({$or:[{age:{$lt:18}},{age:{$gt:25}}]}) //返回大于25或者小于18的数据 $or:[{条件一},{条件二}]
db.test.find({}).start(0).limit(10) //返回满足条件的第0条到第10条的数据集合 其中等同 db.test.find({}).limit(10).start(0) 因此分页功能可以通过改变start和limit的值实现
db.test.find().skip(10).limit(10) //跳过10条 后的文档获取10条,及第11到20个文档
db.test.find({},{age:1,name:-1}) // 只返回对应字段的数据,其中_id,是默认显示的,这里的1,-1表示对应字段的显示隐藏,1为显示,-1为隐藏
db.test.find(),sort({age:1,name:0}) //排序规则,age为升序,姓名为降序,优先对age进行排序 1为升序,0为降序,越靠前优先级越高


修改语句

//修改数据
db.test.update({name:'aaa'},{sex:'woman'})  // 替换姓名为aaa的数据为sex:‘woman’  此时,满足该条件的第一条数据被完全替换  {name:'aaa',sex:'man'}  ==> {sex:'woman'}
db.test.update({name:'aaa'},{$set:{sex:'woman'}})  // 查找姓名为aaa的数据,并将里面的sex属性的值更改为woman  {name:'aaa',sex:'man'}  ==>    {name:'aaa',sex:'woman'}
db.test.update({name:'aaa'},{$unset:{sex:'woman'}})  // 查找姓名为aaa的数据,并将里面的sex属性删除,这里的woman值无论填什么都无所谓
db.test.update({name:'aaa'},{$set:{hobby:{sports:['running','flying'],views:['jiuzaigou','emeishan']}}}) // 像aaa姓名的文档添加了一个hobby:{sports:['running','flying'],views:['jiuzaigou','emeishan']

db.test.find({"hobby.sports":'running'}) // 查找hobby的sports是running的数据
db.test.update({name:'aaa'},{$push:{"hobby.sports":"swimming"}})  //向hobby的sports添加了一个值swimming,{“name”:'aaa',sex:'woman',hobby:{"sports":['running','flying','swimming'],views:['jiuzaigou','emeishan']}}
其中push不会管之前是否有该属性值,会不停的往里面添加
db.test.update({name:'aaa',{$addToSet:{"hobby.sports":"swimming"}}})  // 如果没有则会添加,有就不会添加
db.test.update({name:'aaa'},{$pop:{"hobby.sports":'flying'}})  //删除hobby的sports的flying值

删除语句

db.test.remove({name:'冯宝宝'})  //删除姓名为冯宝宝的文档
db.test.deleteMany({}) //删除该集合下面的所有文档 {}:相当于没有写任何删除条件
db.test.deleteOne({'age':18]) //删除满足条件的第一个文档


一般不建议大家删除数据,毕竟数据还是很不容易恢复的

  

播客主页:https://www.cnblogs.com/epines/

作者:epines
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/epines/p/13356503.html