MongoDB的基础命令

数据库操作

查看当前数据库

db

查看所有数据库

show databases

切换数据库(如果没有会自动创建)

use dbname

删除当前数据库(删除数据库所有集合)

db.dropDatabase()
集合的操作

查看当前数据的所有集合(相当于表)

show collections

创建新的集合

db.createCollection("Emp",{capped:true,size:6124800,max:10000})   

或者不加可选参数
db.createCollection("Emp")

删除集合

db.Emp.drop()

查看集合的详情

db.Emp.find()

格式化查看

db.Emp.find().pretty()
向集合插入数据
document={name:'zhangsan',age:'10',sex:'male'}  --插入数据时,可以先创建一个文档
db.Emp.insert(document)
db.Emp.save(document) //save只能加一条数据
***注意点***
save吧document的_id固定下来
使用save操作某个document后,insert方法就不可使用了。否则可以一直使用insert

插入一条数据

db.Emp.insert({name:'zhangsan'});
db.Emp.insertOne({"a":3})

插入多条数据

db.Emp.insertMany({name:'sss'},{name:'zz',age:'11'})//不加Many也可

[thread1] TypeError: documents.map is not a function :
DBCollection.prototype.insertMany@src/mongo/shell/crud_api.js:283:1

一次插入多条 
需要用[] 括起来

db.Emp.insertMany([{name:'sss'},{name:'zz',age:'11'}])
集合数据的更新

更新一条数据

db.Emp.update({'name':'chen'},{$set:{'name':'xiaochen'}}) //默认改第一条name为xiaochen的

只更新一条时set可以省略
省略时是这样 db.Emp.update({'name':'chen'},{'name':'xiaochen'})//是把外面的{$set:} 都去掉了

db.Emp.update({_id:ObjectId("5d399db3cd6648e542dac1aa”),’name':'chen'},{$set:{'name':'xiaochen'}}) //加上_id去更新 这样就指定哪一个更新了 更准确

注意

造成该问题的原因是集合被设置成了 固定集合 。固定集合的数据不能被修改(只能改成相同长度的数据)。只能查找-删除-再插入

  "errmsg" : "Cannot change the size of a document in a capped collection: 48 != 51"

更新多条数据

db.Emp.update({'name':'xiaochen'},{$set:{'name':'xiaolan'}},{multi:true}) 
//可以一次更新多条 ,这时要将multi设置成true

//这样也是更新多条
db.Emp.updateMany({'name':'xiaochen'},{$set:{'name':'xiaolan'}}) 
集合数据查询
$gt : > 
$lt : < 
$gte: >= 
$lte: <= 
$ne : !=$amp;$in : in 
$nin: not in 
$all: all 
$not: 反匹配(1.3.3及以上版本)
逻辑与或
> db.user.find({"name":"xiaolan"})

> db.user.find({"name":"xiaolan","hobby":["song1","writebook"]})  --- 直接写多个,中间以,隔开
> db.user.find({$or:[{"name":"xiaolan"},{"age":"10"}] })   --或:以$or开头,后面跟的是[]  


> db.user.distinct('name');   --去掉重复数据
[ "sanzhang", "s", "qing", "qingqing", "sss", "dsd" ]//这样出来的是每条数据的名字 除了重复的


> db.user.find({name:/ao/})   --模糊查询    注意:必须有{}
> db.user.find({name:/^ao/})  --模糊查询    以ao开头
> db.user.find({name:/ao$/})  --模糊查询    以ao结尾
> db.user.find({},{"name":1,_id:0}).limit(2)    --查询前两条记录,只显示name    注意:find后面第一个空的{}必须有   name后面的1代表显示 ,0是不显示
--_id:0 表示不显示_id       limit(2)  表示查询2条
如果存在需要查询的列就输出,否则就不输出

> db.user.find({},{"name":1,_id:0}).limit(3).skip(1)   --跳过前几条,查询后面的3条
 
> db.user.find({},{"age":1,_id:1}).limit(2).skip(1)  --显示age,同时显示_id
 
> db.user.find({},{"age":1,_id:0})

> db.user.find({},{"age":1}).limit(2).skip(1)  --默认显示_id
 
> db.user.find({},{"age":0,_id:0}).limit(2).skip(1)   ---"age":0  表示显示除age以外的内容
集合数据的删除
db.user.remove();#删除所有数据 //这样报错 不支持这样删除所有集合
 [thread1] Error: remove needs a query
 
db.user.remove({});
结果成功 :WriteResult({ "nRemoved" : 5 })

db.user.remove({"sex":"女"});#按照条件删除
db.user.remove({"name":"张无忌"},2);#删除几条


mongo在删除数据的时候不支持 all * 全部删除选择{}就可以全部删除了
remove()函数不会删除集合本身,同时,原有的索引也同样不会被删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值