MongoDB 入门第三课:对文档的基本操作

插入文档

插入一个文档

我们可以使用 insert() 或 save() 方法向集合中插入文档,语法如下:

在这里插入图片描述

示例:

db.testFile.insert({"content":"这是一个大文件","createTime":new Date(),"state":null})

注意点:

  1. 若 testFile 集合不存在,则会隐式创建
  2. 插入的数据没有指定 _id,会自动生成主键值
  3. 如果某字段没值,可以赋值为 null,或不写该字段
批量插入

我们可以一次插入多条文档,语法如下:
在这里插入图片描述
示例:

db.testFile.insertMany([
    {"_id":"1","content":"我爱中国","createTime":new Date(),"state":"304"},
    {"_id":"2","content":"我爱你","createTime":new Date(),"state":"401"},
    {"_id":"3","content":"天下无双","createTime":new Date(),"state":"405"}
]);

由于我们在插入时显式指定了 _id,故主键也被设置为该值。如果某条数据插入失败,将会终止插入,但已经插入成功的数据不会回滚掉。

查询文档

查询文档的语法如下:
在这里插入图片描述

查询全部文档
db.testFile.find()
条件查询

如果想查询 state 数值为 304 的文档,那么就需要在 find 方法中添加参数了。

db.testFile.find({"state":"304"})

如果只需要返回符合条件的第一条数据,我们可以使用 findOne 来实现,其语法和 find 一样。

db.testFile.findOne({"state":"304"})
投影查询

如果要查询结果返回部分字段,则需要使用投影查询。例如,我们上面的查询只需要返回 _id 与 content 。

db.testFile.find({"state":"304"},{"content":1})

由于 _id 会默认显示,我们并不需要显式指定。

更新文档

更新文档的语法如下:

在这里插入图片描述

覆盖修改

现在我们有个需求,需要把 _id 为1的文档的 content 修改为 “我是菜鸡”,写出的语句如下:

db.testFile.update({"_id":"1"},{"content":"我是菜鸡"})

执行后,我们惊奇地发现,这条文档除了 _id 和 content 外,别的字段都消失了,这种更新又被称为覆盖修改。

局部修改

为解决上面的问题,我们需要使用修改器 $set,这次我们把 _id 为2的文档的 content 修改为 “这是一次测试”,写出的语句如下:

db.testFile.update({"_id":"2"},{$set:{"content":"这是一次测试"}})

测试一下,这样的写法会保留别的字段,只会完成局部修改,完美!

批量修改

将所有 state 值为 401 的文档中的 content 更新为 ”我的state是401“,写出的语句如下:

db.testFile.update({"state":"401"},{$set:{"content":"我的state是401"}})

但我们发现它只修改了符合条件的第一条数据。如果我们想修改所有符合条件的数据,需要对原来的更新语句做部分修改:

db.testFile.update({"state":"401"},{$set:{"content":"再次更新401"}},{multi:true})

删除文档

删除文档的语法为:

db.集合名称.remove(条件)
删除全部数据
db.集合名称.remove({})
删除部分数据

如果我们想删除 state 为 405 的文档,输入以下语句:

db.testFile.remove({"state":"405"})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值