MongoDB学习笔记(五)—— 增删改查

本文将介绍MongoDB数据库的增删改查相关操作,具体可参考官方手册:https://docs.mongodb.com/manual/

该页面还提供了MongoDB Web Shell,可以用来在线模拟数据库环境,方便学习。


db.collection.insert()

- 向集合中插入一个或多个文档

当我们向集合中插入文档时,如果没有给文档指定 _id 属性,则数据库会自动为文档添加 _id ,该属性用来作为文档的唯一标识。

  • 插入一个
db.c1.insert({name:"tom", age:"18", gender:"男"})
  • 插入多个
db.c1.insert([
    {name:"tom", age:"18", gender:"男"},
    {name:"jenney", age:"16", gender:"女"},
    {name:"klay", age:"20", gender:"男"}
])
  • _id 可以自己指定,数据库就不会自动添加了,自己指定也要确保其唯一性
db.c1.insert({_id:"hello", name:"tom", age:"18", gender:"男"})
  • ObjectId() 可用来生成id,由时间戳和机器码生成
ObjectId()

db.collection.insertOne()

- 插入一个文档对象

insertOne()和insertMany()都可以看作insert()的拆分,是3.2版本以后新加入的功能,为了使操作规范化。

db.c1.insertOne({name:"tom", age:"18", gender:"男"})

db.collection.insertMany()

- 插入多个文档对象

db.c1.insertMany([
    {name:"tom", age:"18", gender:"男"},
    {name:"jenney", age:"16", gender:"女"},
    {name:"klay", age:"20", gender:"男"}
])

db.collection.find()

- find()用来查询集合中符合条件的所有文档,返回的是一个数组

  • 查询集合中所有的文档
db.c1.find() 
db.c1.find({}) 
  • find()可以接收一个对象作为条件参数,查询属性是指定值 {字段:值} 的文档
db.c1.find({age:"18"}) 
  • 查询结果且的集合
db.c1.find({_id:"hello", name:"wyc"})
  • 查询结果的第1文件
db.c1.find({age:"18"})[1]
  • 查询结果的第1个文件的名称
db.c1.find({age:"18"})[1].name
  • 所有查询结果的数量
db.collection.find({age:"18"}).count()

db.collection.findOne()

- 用来查询集合中符合条件的第一个文档,返回的是一个文档对象

db.c1.findOne({age:"18"})

db.collection.update()

  • update(查询条件, 新对象)  会使用新对象来替换旧的对象,默认只会修改一个
db.c1.update({name:"tom"},{age:28})
  • 如果需要修改而不是替换指定的属性,需要借助“修改操作符”来完成修改

    $set 可以用来修改文档中的指定属性
    $unset 可以用来删除文档的指定属性
    ......

db.c1.update(
    {"_id":"123"},
    {$set:{
        gender:"男"
        address:"北京"
        }}
)
  • update() 默认只会修改一个,要修改多个,再添加一个参数 {multi : true}
db.c1.update(
    {"_id":"123"},
    {$set:{
        gender:"男"
        address:"北京"
        },
    {multi:true}
)

db.collection.updateMany()

 - 同时修改多个符合条件的文档

db.collection.updateOne()

 - 修改一个符合条件的文档


db.collection.remove()

- remove可以根据条件来删除文档,传递条件的方式和find()一样。删除符合条件的所有文档

  • 删除指定文档
db.c1.remove({age:28})
  • 如果remove()第二个参数传递一个true,则只会删除一个
db.c1.remove({age:28}, true)
  • 如果不传参会报错
db.c1.remove()
  • 只传递一个空的参数{},相当于清空集合(逐个删除,性能差),删除后show仍存在
db.c1.remove({})
show collections

db.collection.deleteOne()

- 删除一个文档

db.c1.deleteOne({age:28})

db.collection.deleteMany()

- 删除所有文档

db.c1.deleteMany({age:28})

db.collection.drop()

- 删除整个集合,删除后show不存在

db.c1.drop()
show collections

db.dropDatabase() 

- 删除整个数据库

use testdb
db.dropDatabase() 

isDel字段

- 添加指定字段如isDel,来代表文档是否用到,从而不需要将数据彻底删除,便于维护

猜你喜欢

转载自blog.csdn.net/qq_14997473/article/details/89681081