使用mongodb实现简单的读写操作


    目录
  • 引言
  • 创建操作
  • 查询操作
  • 修改操作
  • 删除操作
  • 一点建议

    引言
    本文适合初学者,特别是刚刚安装了mongodb数据库的朋友,或在atlas刚拿到免费集群的朋友。
    拿到数据库,心情很激动,手痒难耐。特别想向数据库插入几条数据库试试。即使是深夜完成了安装,也忍不住想去完成这些操作。看到数据库里的记录,心中会更有成就感。
    这是一个里程碑的时刻,代表着mongodb学习的开始。或者其他任何一种数据库技能学习的开始。
    本文基于官方文档,整理出mongodb简单的增删改查操作。
    创建操作
    创建操作,是向集合中添加一个新的文档。mongodb的一条记录称为一个文档。文档是类似JSON结构的BSON结构的键值对对象,支持字符串,数值,布尔类型,时间,数组,对象等类型。多条文档构成了mongodb的一个集合。
    当插入文档的集合不存在时,mongodb自动创建这个集合。
    Mongodb提供了两种文档插入方法
    
db.collection.insertOne()
db.collection.insertMany()
 
//举例
db.users.insertOne({
  name:"sue",
  age: 26,
  gentle: "Female"
})
 
db.users.insertMany([{
  name:"sue",
  age: 26,
  gentle: "Female"
},{
  name:"james",
  age: 28,
  gentle: "Male"
}])

    其中集合名称是users, 文档是带有三个字段name, age, gentle的对象。
    使用insertOne方法,插入一条文档,参数是一个对象。而使用insertMany方法,插入多条文档,参数是一个数组。
    Mongodb对单个文档的操作是原子性的,即对于单个文档的操作,只有成功和失败两个结果。成功, 则数据保存到数据库。失败,则没有数据保存到数据库。不会出现保存了一半这样的中间状态。insertOne向数据库中插入一条文档记录,是原子操作。insertMany向数据库插入多条文档,不是原子操作。
    查询操作
    查询操作,是从数据库的某个集合中读取文档。
    mongodb提供find()方法,实现从集合中读取文档数据。
    
db.collection.find()

    在find()方法中,可以带有参数,作为查询参数,限定查询返回值。如对前面插入的user集合进行查询
    
//查询所有数据
db.users.find()
//查询name为sue的数据
db.users.find({
  name: "sue"
})
//限制返回数量
db.users.find().limit(5)

    修改操作
    修改操作更新数据库制定集合中符合查询条件的文档数据。mongodb提供了几种方法来支持数据的更新
    
//更新一条数据
db.collection.updateOne()
//更新多条数据
db.collection.updateMany()
//替换一条数据
db.collection.replaceOne()

    用户在修改操作的第一个参数指定查询过滤条件,在第二个参数中指定修改字段和目标值。如修改集合users中name为james的age字段
    
db.users.updateOne({name: "james"},{$set: {"age": 30}})

    其中过滤条件{name: "james"}用来筛选集合中符合name是james的文档。使用$set设置更新的字段和字段值。
    Mongodb对单个文档的修改是原子性的,因此updateOne(), replaceOne()方法,都是原子操作。updateMany()方法操作单条记录,也是原子性的,操作多条记录时,是非原子操作。
    删除操作
    删除操作,是删除集合中的文档。mongodb提供了两种方法来删除文档。
    
//删除一条文档
db.collection.deleteOne()
//删除多条文档
db.collection.deleteMany()

    删除方法的参数中指定查询过滤条件,使用该条件查询出来的结果会被删除。如删除users表中男性数据。
    
db.users.deleteMany({gentle: 'Male'})

    删除users表中name是james的数据
    
db.users.deleteOne({name: 'James'})

    Mongodb中对单个文档的操作是原子的。所以deleteOne是原子操作, deleteMany不是原子操作。
    一点建议
    数据库操作中,修改操作和删除操作,都是比较危险的操作。数据一旦修改保存到数据库,很难恢复到修改前的样子。对于单条数据,恢复起来容易。对于批量数据的修改更新,请使用查询语句反复确认修改删除范围后,再执行操作。并准备好数据恢复脚本。