mongodb基本使用教程(增删改查)

基本的增删改查
查看当前所有的数据库

show dbs

在这里插入图片描述
创建,使用数据库
存在则使用,不存在则新建

use demo

在这里插入图片描述
再来show一下
在这里插入图片描述
可以看到,新建的数据库并不在数据库的列表中, 要显示它,我们需要向新建的数据库插入一些数据

创建集合
分为显式和隐式两种
显式创建

db.createCollection("test",{capped:"ture",size:60000,max:100})

在这里插入图片描述
capped:为true,表示这是个封闭的集合,使用此参数需要指定size的值
size:指定上限集合的最大大小(以字节为单位)
max:指定上限集合中允许的最大文档数

隐式创建
直接插入文档,就创建了集合

db.class.insert({"name":"mongo教程"})

隐式创建了名为class的集合
在这里插入图片描述
两种方式都可以使新建的数据库显示在数据库的列表中,但是在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
可以看到显示创建的test集合并查询没有返回结果(还没有插入文档)

查询集合中的文档

db.class.find()

在这里插入图片描述
可以看到插入的文档多了一个_id字段,这个字段可以插入时指定,否则会自动为其分配唯一的ObjectId值,其值与执行操作的机器和时间有关,注意_id和id是不同的

3.2版本后mongodb针对插入一条还是多条数据提供了更为可靠的insertOne()和insertMany()方法

insertOne()

db.test.insertOne({"name":"小明","age":15})

在这里插入图片描述
insertMany()

db.test.insertMany([
{"name":"小红","age":20},
{"name":"小王","age":21,address:"北京"},
{"name":"小陈","age":15,address:"上海"}
])

在这里插入图片描述
有序地插入多个文档

db.test.insert([
... {_id:5,"name":"老大","age":"34"},
... {_id:7,name:"老二","age":"33"},
... {_id:6,name:"老三","age":"33"},
... {_id:6,name:“老四”,“age”:null}
... ],
... {ordered:true}
... )

这里的有序指的并不是_id的顺序,如果存在某条待插入的文档和已有的文档_id相同的情况,则此文档和后续的文档都不在插入,设置ordered为false时除了出错的记录以外都继续插入

以变量的方式插入文档

document=({name:"小白","age":21})
db.test.insert(document)

在这里插入图片描述
插入文档也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据

更新文档

db.class.update(
... {name:"mongo教程"},
... {$set:{name:"nosql",book_id:"001"}}
... )

在这里插入图片描述
删除class中book_id为001的文档

db.class.remove({"book_id":"001"})

在这里插入图片描述
删除book_id大于003的文档

db.class.remove({ book_id:{$gt:"003"} })

在这里插入图片描述
查询操作

美化查询输出(格式化查询输出)

db.test.find().pretty()

在这里插入图片描述
还可以使用findOne()方法,只返回一个文档

操作符实例
等于 =(:)db.test.find({age:20})
大于 > ($gt)db.test.find({age:{$gt:20}})
小于 < ($lt)db.test.find({age:{$lt:30}})
大于等于 >= ($gte)db.test.find({age:{$gte:20}})
小于等于 <= ($lte)db.test.find({age:{$lte:20}})
不等于 != ($ne)db.test.find({age:{$ne:20}})
与 and ()db.test.find({name:“小红”,age:20})
或 or ()db.test.find({$or:[{name:“小红”},{age:“30”}]})

查询age为null

db.test.find({age:null})

注意age:"",age:“null”,age:null 是不相同的
在这里插入图片描述

插入一个包含数组的文档

db.test.insert({"name":"工具","quantity":3,"tags":["锤子","钳子","锯子"]})
db.test.insert({"name":"工人","quantity":2,"tags":["长工","短工"]})

在这里插入图片描述

查询数组

db.test.find({tags:["长工","短工"]})

在这里插入图片描述
查询有3个元素的数组

db.test.find({tags:{$size:3}})

在这里插入图片描述
查询数组里的某一个值

db.test.find({tags:"锤子"})

在这里插入图片描述
限制查询结果的个数

db.test.find().limit(3)

在这里插入图片描述
返回的是集合中的前三个文档

skip()用于略过指定个数的文档

db.test.find().skip(1)

与limit组合使用

db.test.find().limit(3).skip(1)

在这里插入图片描述
sort()用于对查询结果进行排序,1是升序,-1是降序

db.test.find().sort({"_id":1})

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值