【MongoDB增删改查】

版权声明:本文为博主原创文章,各路大佬可放心转载。 https://blog.csdn.net/qq_41964425/article/details/85004497

MongoDB与MySQL的对应关系

关键字 MongoDB MySQL
DB DB
table Collections
row Documents
column Field

MongoDB增删改查

⚠️注意:下面的增删改查语法中:db是关键字,而table是具体的表名称

创建/查看/使用/删除 表/库

show dbs  # 查磁盘上已存在的所有库
db  # 查当前使用的库
use db  # 使用数据库,如果没有此库,则创建并使用
show tables  # 查当前库下的所有表
db.table.drop()  # 删除表
db.dropDatabase()  # 删除当前库

db.table.insert({name: "张三", age: 30})
# 插入一条数据,如果没有此表,则会自动创建

db.table.insertOne({name: "李四", age: 40})
# 单条插入(官方推荐写法)

db.table.insertMany([{name: "王五", age: 50}, {name: "小六", age: 60}])
# 多条插入(官方推荐写法)

db.table.remove({})
# 无条件删除,即删除所有数据,清空Collection(表)

db.table.remove({name: "张三"})
# 指定条件删除,这里将删除所有name为"张三"的数据

db.table.deleteOne({name: "李四"})
# 单条删除,删除name为"李四"的第一条数据(官方推荐写法)

db.table.deleteOne()
# 不指定条件将删除第一条数据

db.table.deleteMany({$or: [{name: "小六"}, {name: "张三"}]})
# 多条删除,删除name为"小六"或"张三"的所有数据(官方推荐写法)

db.table.update({name: "张三"}, {$unset: {age: 1}})
# 这个操作相当于关系型数据库中删除字段
# 将name为"张三"的age字段删除
# 1可换为任何值

db.table.update({name: "张三", {$set: {age: 33}})
# 把name为"张三"的数据的age改为33

db.table.update({}, {$set: {name: "王五"}})
# 不指定条件更新,将Collections(表)中的第一条数据的name更新为"王五"

db.table.updateOne({name: "李四"}, {$set: {age: 44}})
# 单条修改,根据条件修改最靠前的一条记录

db.table.updateMany({name: "王五"}, {$set: {hobby: ["抽烟", "喝酒", "汤头"]}})
# 多条修改,根据条件修改所有匹配到的数据
# 注意:MongoDB的灵活性很好——没有即创建⬇️
# 如果该Collection(表)中没有名为hobby的Field(列),那么它将会自动创建一个名为hobby的列

db.table.updateMany({}, {$set: {hobby: ["抽烟", "喝酒", "汤头"]}})
# updateMany不指定条件,将修改Collections(表)中的所有数据

db.table.updateMany({name: "王五"}, {$push: {hobby: "谈恋爱"}})
# $push是用来对Array(列表)数据类型进行增加元素的
# 将所有name为"张三"的数据的hobby中增加一个新元素"谈恋爱"

db.table.updateMany({name: "张三"}, {$pull: {hobby: "谈恋爱"}})
# $pull是用来对Array(列表)数据类型进行删除元素的
# 将所有name为"张三"的数据的hobby中名为"谈恋爱"的所有元素删除

db.userinfo.updateMany({name: "王五"}, {$pop: {hobby: 1}})
# $pop用于将Array(列表)数据类型中的第一个或最后一个元素删除
# {$pop: {hobby: 1}} 表示删除最后第一个,可使用-1来删除第一个

db.table.updateOne({name: "张三"}, {$set: {"hobby.0": "抽大烟"}})
# 根据下标将hobby中的"抽烟"更新为"抽大烟"
# 注意:这里的"hobby.0"必须加上引号

db.table.updateOne({name: "张三", hobby: "喝酒"}, {$set: {"hobby.$": "喝啤酒"}})
# 现在的hobby.$中的$为"喝酒",即$为筛选条件中的值
# 还有一点,如果有多层Array(列表),只限用于第一层
# 注意:这里的"hobby.$"必须加上引号

db.table.updateOne({name: "张三"}, {$inc: {age: 1}})
# 将name为"张三"的年age加1

db.table.updateOne({name: "张三"}, {$inc: {score: -20}})
# 将name为"李四"的age减20

db.table.updateOne({name: "李四"}, {$inc: {"other.weight": 10}})
# 将name为"张三"的数据中的名为other的(Object)对象中的weight加10
# 注意:这里的"other.weight"必须加上引号
# $inc的底层是将要操作的数据,加上某个值然后保存,如果是字符串则拼接

db.table.find()
# 无条件查找,将Collection(表)中的所有数据一次性返回

db.table.find({name: "小六"})
# 多条查找,将返回name为"小六"的所有数据

db.table.find({name: "张三", age: 33})
# 查name为"张三"且age为33数据

db.table.find({$or: [{name: "张三"}, {name: "李四"}]})
# 查name为"张三"或"李四"的所有数据

db.table.find({age: {$gt: 40}})
# 查age大于40的数据
# 同样的语法还有:{$gte: 大于等于, $lt: 小于, $lte: 小于等于, $eq: 等于}

db.table.find({name: {$in: ["张三", "李四", "王五"]}})
# 查name为"张三"或"李四"或"王五"的所有数据

db.table.find({hobby: {$all: ["抽烟", "喝酒"]}})
# 查名为hobby的Field(字段)中包含"抽烟"或"喝酒"的所有数据

db.ui.find({}, {_id: 0, hobby: 0})
# 可以塞选字段
# 这里将过滤掉"_id"和"hobby"字段

db.table.findOne()
# 无条件查找一条数据,默认返回当前Collection(表)中的第一条数据

db.table.findOne({name: "小六"})
# 单条查找,将返回name为"小六"的第一条记录

db.table.findOne({"other.height": 1.82})
# 查名为other的Object(对象)中的height为1.82的数据
# 注意:这里的"other.height"必须加上引号

db.table.find().limit(5)
# limit() 要展示的数量,从前往后
# 这里将展示出前5条数据

db.table.find().skip(3)
# skip()  跳过几条数据
# 这里将跳过前3条数据,直接从第四条开始

db.table.find().sort({id: 1})
# sort()  排序,1为正序 -1为倒序
# 这里将根据id进行正序

db.table.find().sort({id: -1}).skip(2).limit(3)
# 根据id进行倒序,排序后再跳过前两条数据,最后从3条数据开始往后取3条数据
# 执行优先级:sort > skip > limit

猜你喜欢

转载自blog.csdn.net/qq_41964425/article/details/85004497