四、MongoDB增删改查
一、增加
-
insert向数据库中插入集合
- 插入一条记录,传入集合
db.
.insert() db.students.insert({name:"唐僧",age:60,gender:"M"})
- 插入多条记录,传入数组
db.students.insert([{name:"猪八戒",age:53,gender:"M"},{name:"沙僧",age:50,gender:"M"}])
- 默认生成时间戳id,确保数据唯一,原理是调用如下语句,可以自行指定id
默认:
ObjectId()
自行指定:
db.students.insert({_id:"001",name:"白骨精",age:60,gender:"W"})
-
insertOne向数据库中插入集合
- 插入一个文档对象,只能传入一个文档,不能传入数组
db.students.insertOne({_id:"002",name:"铁扇公主 ",age:60,gender:"W"})
-
insertMany向数据库中插入集合
- 插入多个文档对象,只能传入一个数组,即使只存在一个文档,不能传入文档
db.students.insertMany([{_id:"004",name:"牛魔王",age:60,gender:"M"},{_id:"005",name:"红孩儿",age:60,gender:"M"}])
其实是对insert的拆分
二、查询
查询集合中所有符合条件的文档
-
find进行查询集合所有文档
db.students.find();
db.students.find({});
-
find进行条件查询
{}:表示集合中所有文档;
{属性:值} 查询属性是指定值的文档
db.students.find({_id:"002"});
db.students.find({_id:"002",name:"刘德华"});
db.students.find({_id:"002"}).count(); ----查看查询的文档的数量
db.students.find({_id:"002"}).length();
find返回值为数组,可以通过下标获取对应值
-
findOne进行条件查询
findOne返回的为Object,可以用返回值.对象
查询集合中符合条件的第一个文档,最多一条文档
db.students.findOne({name:"AideHua"});
三、修改
-
update(查询条件,新对象)
db.
.update(查询条件,新对象) 如:db.students.update({_id:"002"},{age:18}) 注意:将会用新对象{age:18}替换之前旧对象
修改前
修改后
-
update(查询条件,{$set:修改文档属性})
db.students.update({_id:"004"},{$set:{age:180}})
-
修改操作符
set ------修改文档指定属性
unset------删除文档指定属性(和值无关)
默认只会修改一个
如果想要进行修改多个,指定可选参数multi
db.students.update({_id:"004"},{$set:{age:880}},{multi:true})
-
-
updateMany()
同时修改多个符合条件的文档
-
匹配多少个,就会修改多少个的值
db.students.updateMany({_id:"004"},{$set:{age:180}})
-
-
updateOne()
修改一个符合条件的文档
-
只会修改匹配的第一个
db.students.updateOne({_id:"004"},{$set:{age:180}})
-
-
replaceOne()
替换文档
四、删除
-
remove()
- 删除符合条件的而所有文档,默认删除所有,删除单个需要指定可选参数justOne为:true
删除多个,默认情况
db.students.remove({name:"Liming"})
删除单个
db.students.remove({name:"Liming"},true)
- 必须指定参数,否则报错,注意和find()区别
db.students.remove();//报错
- 删除所有文档,但是集合还是存在的
db.students.remove({});
- 删除集合,若是数据库的最后一个人集合,那么数据库也会被删除
db.students.drop();
-
deleteOne()
- 删除一个
db.students.deleteOne({name:"Liming"})
-
deleteMany()
- 删除多个
db.students.deleteMany({name:"Liming"})
本文来自博客园,作者:码农阿亮,转载请注明原文链接:https://www.cnblogs.com/wml-it/p/15785914.html
技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
开源库地址,欢迎点亮:
GitHub:https://github.com/ITMingliang
Gitee: https://gitee.com/mingliang_it
GitLab: https://gitlab.com/ITMingliang
建群声明: 本着技术在于分享,方便大家交流学习的初心,特此建立【编程内功修炼交流群】,为大家答疑解惑。热烈欢迎各位爱交流学习的程序员进群,也希望进群的大佬能不吝分享自己遇到的技术问题和学习心得!进群方式:扫码关注公众号,后台回复【进群】。