在mongo db 中增加、删除、修改文档有好多方法,这里简单记录一下我所知道的一些方法。
前置条件:
1、创建study数据库 use study;
2、创建persons集合,当第一次向persons集合中插入数据时,如果集合不存在会自动创建。当然也可以使用命令 db.createCollection("persons",{可以带一些参数,也可以不带})
3、db.persons.find({}) 可以查询persons集合中所有的文档。
一、增加文档
① 增加单个文档,使用 save 或 insertOne 或 insert 方法
db.persons.save({"userId":1}); db.persons.insertOne({"userId":2,"name":"huan"}); db.persons.insert({"userId":3,"name":"huan1993",address:["湖北","武汉"]});
注意:
1、save 方法:如果传递了_id字段,如果_id字段的值在集合中已经存在,那么就会执行更新操作。
2、insertOne方法:该方法不支持执行计划 (官网原文:
insertOne()
is not compatible with db.collection.explain()
.Use insert()
instead.)。
3、insert方法,当方法参数是 {} 时,那么是单条插入。
4、insert和insertOne方法当手动指定 _id 字段的值,且值存在时,那么会报错。
② 批量增加文档,使用 insert 或 insertMany 方法。
db.persons.insert([{"userId":4},{"userId":5,"address":["北京"]}]); db.persons.insertMany([{"userId":6,"name":"1993"},{"userId":7,"name":"19930311"}]);
注意:
1、当 insert方法中的参数是数组传递的时候就是批量插入
2、insertMany 中的文档如果指定了 _id 字段,那么这个字段的值必须要唯一。
3、insertMany 不支持执行计划
4、默认情况下如果 insertMany 中的 _id 字段重复了,那么 到第一个 _id 重复前的记录都会插入成功,之后的都会失败,即使之后的记录数不存在 _id 重复,假如我要之后的记录也要执行,那么需要设置 ordered 为 false . 即: db.persons.insertMany([],{ordered:false})
二、修改文档
① 替换文档
上方有个 userId 为 2文档,我想将将 name 的值更改成 name-update
注意:
1、如果前面的查询条件 {"userId":2} 查出了多条记录,只会更新第一条记录。
2、次方法会将后面的文档替换满足条件的第一个文档。
② 修改文档中的某个字段
注意: 1、此时也之后更新符合条件的第一条记录。
2、如果需要更新的字段在原文档中不存在则会增加此字段
③ 批量修改
方式一:
经过上面2步的操作,我们现在存在2条 {"name":"huan1993"} 的记录,现在要把2条记录的 userId 字段的值 同时修改成 10
注意:
1、在update方法中必须要将 第四个 参数 设置成 true
2、批量更新只可用在 $XXX 的修饰器中,当删除上面的$set时,更新会报错。
方式二:
上方有2个userId=10的记录,但是它们的name的值不一样,下方就更新成一样的。
④ save 方法也可以进行update操作,当 _id 的值存在时,将进行更新操作。
看上方的图可以,存在2个userId=10的记录,现在我们要将第二条记录的 userId 的值更新成 12,使用 _id 这个字段的值去更新。
⑤ 保存或更新操作
db.persons.update({"userId":13},{ $set: { "age":25, "name":"第一次执行,将会执行 插入操作,因此此时无法查询出来记录,第二次执行将会执行更新操作,因为此时记录已经存在了。" } },true,false); db.persons.find({"userId":13});
注意:
1、此时一定要将 update 的第三个参数设置成 true, 否则当找不到记录时不会进行插入操作。第三个参数即为upsert
2、当匹配到记录时将会执行更新操作。
三、文档的删除
① 删除全部文档
db.persons.remove({});
注意:
1、 db.persons.remove({}) 只是清空了集合persons中的数据,而 db.persons.drop() 将会删除 persons集合。
② 删除根据条件查询出来的文档
db.persons.remove({"userId":13});
四、完整脚本如下:
use study; db.persons.save({"userId":1,"_id":ObjectId("5aa3b4d2ac88ec2a80e6483c")}); db.persons.insertOne({"userId":2,"name":"huan"}); db.persons.insert({"userId":3,"name":"huan1993",address:["湖北","武汉"]}); db.persons.find(); db.persons.insert([{"userId":4},{"userId":5,"address":["北京"]}]); db.persons.insertMany([{"userId":6,"name":"1993"},{"userId":7,"name":"19930311"}]); db.persons.update({"userId":2 },{"name":"name-update"}); db.persons.find({"name":"name-update"}) db.persons.update({"name":"name-update"},{$set:{"userId":2,"name":"huan1993"}}); db.persons.find({"userId":2}); db.persons.find({"name":"huan1993"}); db.persons.update({"name":"huan1993"},{ $set: { "userId" : 10} },false,true); db.persons.find({"name":"huan1993"}) db.persons.updateMany({"userId":10},{$set:{"name":"updateMany"}}); db.persons.find({"userId":10}); db.persons.save({"_id" : ObjectId("5aa3b4dbac88ec2a80e6483d"),"userId":12}); db.persons.find({"userId":12}); db.persons.update({"userId":13},{ $set: { "age":25, "name":"第一次执行,将会执行 插入操作,因此此时无法查询出来记录,第二次执行将会执行更新操作,因为此时记录已经存在了。" } },true,false); db.persons.find({"userId":13}); db.persons.remove({}); db.persons.remove({"userId":13}); db.persons.drop();
相关推荐
总之,"c#vs2008实现的mongo查询增删改源代码"是一个关于如何在C# 2008中使用MongoDB .NET驱动进行数据库操作的例子。这个项目提供了宝贵的实践经验和学习资源,对于想在.NET平台上使用MongoDB的开发者来说极具价值...
本篇文章将深入探讨如何使用C#和WinForm来实现MongoDB的增删改操作。 首先,我们需要在C#项目中引入MongoDB的驱动程序。MongoDB官方提供了`MongoDB.Driver`库,可以方便地与MongoDB进行通信。通过NuGet包管理器安装...
通过输入`mongo`命令,你可以进入shell并执行查询、插入、更新等操作。例如,使用`use`命令切换数据库,`db.collection.insert()`用于插入文档,`db.collection.find()`用于查找文档。 5. 代码连接: MongoDB提供了...
标题中的“nodejs操作mongodb,插查删改”指的是使用Node.js这门JavaScript后端运行环境来与MongoDB数据库进行交互,实现数据的增、删、查、改四大基本操作。MongoDB是一种流行的NoSQL数据库,它以JSON格式存储数据...
在你的`mongo-test`目录下,你可以创建一个简单的测试应用,模拟数据的增删改操作,以验证Change Stream的监听效果。 总结:通过上述步骤,我们已经成功地在Spring Boot应用中整合了MongoDB的Change Stream功能。这...
1. 插入、删除和更新操作:MongoDB提供了一系列的操作符用于执行增删改操作,支持通过定位操作符("$")来定位特定字段进行操作。 2. 查询操作:MongoDB的查询操作非常灵活,支持子键筛选、复杂查询条件、正则表达式...
这可能导致磁盘空间利用率低下,尤其是在频繁进行增删改操作的环境中。为了优化空间利用,我们需要采取措施来整理和回收这些空闲空间。 以下是几种常用的MongoDB空闲空间释放方法: 1. **compact命令**: MongoDB...
7. **02-初识增删改.pptx**可能涉及: - 插入数据:`db.collection.insertOne()`或`db.collection.insertMany()`插入单个或多个文档。 - 更新数据:`db.collection.updateOne()`或`db.collection.updateMany()`...
这部分内容主要讲述如何在Node.js中创建一个可以对MongoDB数据库进行基本操作的模块,并展示如何将其引入到一个项目中去使用。 描述中提到这是一篇具有参考价值的分享,希望读者能从中得到帮助。它预示了文章内容是...
// 其他增删改的方法... } ``` 最后,关于Gson库的使用。Gson是Google提供的Java对象和JSON数据之间的相互转换库,我们常常在SpringBoot应用中用于将Java对象序列化为JSON响应,或者将JSON请求反序列化为Java对象...
3. 数据增删改:提供对应的接口,允许客户端进行数据的增删改操作。 七、测试与部署 1. 单元测试:使用 JUnit 和 Mockito 进行单元测试,确保代码质量。 2. 集成测试:模拟真实环境,进行端到端测试。 3. 打包...