Mongodb的增删改查
时间:2023-3-1 19:41 作者:wen 分类: mongodb
一、插入数据
# 添加集合数据
db.nor_col.insert({"name":"大都督","wife":"小乔","num":1})
# 批量添加集合数据
db.nor_col.insert([{"name":"大都督","wife":"小乔","num":1},{"name":"孙策","wife":"大乔","num":2}])
二、保存
# 保存
db.stu.save({'_id': 20211206, "name": "wenxk", "gender": 2})
三、查询
# 查询
db.stu.find()
1、简单查询
- 方法find():查询
- db.集合名称.find(条件文档)
- 方法findOne():查询,只返回第一个
- db.集合名称.findOne(条件文档)
- 方法pretty():将结果格式化;不能和findOne()一起用!
- db.集合名称.find(条件文档).pretty()
- 方法distinct():去重
# 去重 db.stu.distinct('age') db.stu.distinct('name',{age:18})
2、比较运算符
- 等于:默认等于判断,没有运算符
- 小于:$lt (less than)
- 小于等于:$lte (less than equal)
- 大于:$gt (greater than)
- 大于等于:$gte
- 不等于:$ne
# 查询年龄大于18的所有学生
db.stu.find({age:{$gte:18}})
3、逻辑运算符
- and:使用$and,在json中写多个条件即可
# 查询年龄大于或等于18,并且性别为true的学生 db.stu.find({age:{$gte:18},gender:true}) db.stu.find($and:{age:{$gte:18}},{gender:true}})
- or:使用$or,值为数组,数组中每个元素为json
#查询年龄大于18,或性别为false的学生 db.stu.find($or:{age:{$gt:18}},{gender:false})
4、范围运算符
- 使用$in,$nin判断数据是否在某个数组内
# 查询年龄为18、28的学生 db.stu.find({age:{$in:[18,28]}})
5、正则表达式
- 使用$regex编写正则表达式
# 查询name以‘黄’开头的数据 db.stu.find({name:{$regex:"^黄"}})
# 查询name以‘黄’开头的数据 db.stu.find({name:{$regex:/^黄/}})
6、自定义查询
mongo shell是一个js的执行环境,使用$where写一个函数,返回满足条件的数据
# 查询年龄大于30的学生
db.stu.find({
$where:function(){
return this.age>30;
}
})
7、skip和limit
- 方法limit():用户读取指定数量的文档
# db.集合名称.find().limit(NUMBER) # 查询2条学生信息 db.stu.find().limit(2)
- 方法skip():用户跳过指定数量的文档
# db.集合名称.find().skip(NUMBER) db.stu.find().skip(2)
- 同时使用
db.stu.find().skip(2).limit(2)
- 使用skip在使用limit的效率要高于前者
8、投影
在查询到的返回结果中,只选择必要的字段
命令:db.集合名称.find({},{字段名称:1,...})
参数为字段于值,值为1表示显示,值为0不显示,特别注意:
- 对于_id列表默认显示的,如果不显示需要明确设置为0
- 对于其他不显示的字段不能设置为0
db.stu.find({},{_id:0,name:1,gender:1})
9、排序
方法sort(),用于对查询结果按照指定的字段进行排序
命令:db.集合名称.find().sort({字段:1,...})
参数1为升序排列,参数-1位降序排序
# 根据性别降序,再根据年龄升序
db.stu.find().sort({gender:-1,age:1})
10、统计个数
方法count()用于统计结果集中文档条数
命令:db.集合名称.find({条件}).count()
命令:db.集合名称.count({条件})
db.stu.find({gender:true}).count()
db.stu.count({age:{$gt:20},gender:true})
四、更新
db.集合名称.update({query},{update},{multi:boolean})
- 参数query:查询条件
- 参数update:跟新操作符
- 参数multi:可选,默认是false,表示只跟新找到的第一条数据,值为true表示把满足条件的数据全部更新
# 全文档进行覆盖更新
db.stu.update({name:'hr'},{name:'mnc'})
# 指定键值更新操作
db.stu.update({name:'hr'},{$set:{name:'hys'}})
# 更新全部
db.stu.update({},{$set:{gender:0},{multi:true}})
注意:"multi update only works with $ operators"
multi参数必须和$set一起使用
五、删除
db.集合名称.remove({query},{justOne:boolean})
- 参数query:可选,删除的文档的条件
- 参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除全部
标签: mongodb