第2章 MongoDB的增删改查
(黎明你好原创作品,转载请注明)
MongoDB中数据的基本单元叫做文档,采用json的键-值的方式。多个键及其关联的值有序的存放在一起变是文档。类似于编程语言中的键值关系。MongoDB文档都是BSON文档,他是一个JSON的二进制形式。
MongoDB的文档
MongoDB中文档被存储在集合中。集合是一组有关系索引的文档。集合类似于关系数据库中的表。
MongoDB的集合
2.1 方法参考
查询游标方法
名称 | 说明 |
cursor.count() | 返回游标中的文档的数量。 |
cursor.explain() | 报告的查询执行计划,包括索引使用的游标。 |
cursor.hint() | 若要使用查询的特定索引的部队 MongoDB。 |
cursor.limit() | 约束游标的结果集的大小。 |
cursor.next() | 返回游标中的下一个文档。 |
cursor.skip() | 返回一个游标,开始传递或跳过的一些文件后才返回结果。 |
cursor.sort() | 返回结果排序根据排序的规范。 |
cursor.toArray() | 返回一个数组,包含由光标返回的所有文档。 |
名称 | 说明 |
db.collection.insert() | 在集合中创建一个新文档。 |
db.collection.save() | 提供insert()和update ()插入新文件的包装。 |
db.collection.update() | 修改集合中的文档。 |
db.collection.find() | 集合上执行查询,并返回一个游标对象。 |
db.collection.findOne() | 执行查询,并返回一个单独的文档。 |
db.collection.remove() | 从集合中删除的文件。 |
db.collection.count() | 换行计数集合或匹配查询中返回的文档数的计数。 |
db.collection.distinct() | 返回一个数组没有指定的字段不重复值的文件。 |
2.2 Insert()
db.collection.insert(document)Insert()方法有以下行为:
如果该集合不存在,insert()方法将创建集合。
如果文档没有指定一个_id后缀字段,然后 MongoDB 将添加一个_id字段并使用ObjectId为文档分配取值。
如果文档需要增加一个新的字段,则insert()方法可以为文档插入新的字段。这不需要更改集合的数据模型或现有的文档。
db.user.insert({_id: "1", name:{username: "limingnihao", nickname: "黎明你好"}, password: "123456"}) db.user.insert({_id: "2", name:{username: "zhoujielun", nickname: "周杰伦"}, password: "123456", birth: ISODate('1979-01-18')}) db.user.insert({_id: "3", name:{username: "caiyilin", nickname: "蔡依林"}, password: "123456", birth: ISODate('1980-09-15'), special:["看我72变", "花蝴蝶", "特务J"], regionName: "台湾"})
2.3 Save()
db.collection.save(document)插入一个新的文档,或者根据其文档的参数更新现有的文档。
如果文档不包含一个_id的字段进行save时,mongod将向文档中添加一个_id字段并将其分配一个ObjectId。
如果文档中包含一个_id字段和值进行save ()方法时,则在集合中查询此_id的文档执行的是upsert操作。如果集合中不存在具有指定的_id值的文档,save ()方法执行的是insert操作。save ()方法执行时会将现有文档中的所有字段都替换为新文档中字段。
db.user.save({_id: "1", name:{username: "limingnihao", nickname: "黎明你好"}, password: "123456", birth: ISODate('1985-07-15')})
2.4 Update()
db.collection.update( <query>, <update>, <upsert>, <multi> )
修改现有存在的文档或集合时使用。
默认的update()方法值更新单个文档。但是如果multi参数设置为true,则更新操作可以更新全部符合条件的文档。
Query – 类型:文档;用于更新选择过滤。
Update – 类型:文档;需要更新的文档的内容。
Upsert – 类型:文档或boolean;设置为true时,当查询没有匹配到文档时进行新建。默认值为false
Multi: - 类型:文档或boolean;设置为true时,则更新满足查询条件的所有文档(多个)。设置为false时只更新单个文档。默认为false。
字段更新操作方式
名字 | 说明 |
$inc | 用来增加已有键的值,或者在键不存在时创建一个键。是专门来增加(和减少)数字的。只能用于整数、长整数或双精度浮点数。要是用在其他类型的数据上就会导致操作失败。 |
$rename | 重命名字段。新的字段名称不能和文档中现有的字段名相同。 |
$setOnInsert | 执行insert操作时,操作给相应的字段赋值。 |
$set | 用来指定一个键的值。如果这个键不存在,则创建它。 |
$unset | 从文档中移除指定的键。 |
db.user.update({_id: "1"}, {$inc:{age: 1}}, {multi:true}) db.user.update({_id: "1"}, { $rename: { 'password': 'pwd'}}) db.user.update({_id: "4"}, { $setOnInsert: { works: 5}}, {upsert: true}) db.user.update({_id: "1"}, {$set:{password: "654321", age: 28}}) db.user.update({_id: "4"},{$unset: {"works": 5 }})
2.5 Find()
db.collection.find(<criteria>, <projection>) db.collection.findOne(<criteria>, <projection>)
Criteria - 类型:文档;可选,文档的查询过滤条件。
Projection - 类型:文档,对结果进行字段匹配,{ field1: <boolean>, field2: <boolean> ... }。
后面还可以:Sort()排序、Limit()限制个数、Skip()起始点。
db.collection.find(<criteria>, <projection>)返回集合 db.collection.findOne(<criteria>, <projection>)返回一个 db.user.find({_id: "1"}) db.user.find({works: 5}) db.user.find().sort({age:1}) db.user.find().limit(2).sort({age:1}) db.user.find().skip(1).limit(2).sort({age:1})
2.6 Remove()
db.collection.remove(query, justOne)
Query – 类型:文档;用于删除选择过滤。
JustOne – 类型:boolean;当设置为true时只删除一个文档。
db.user.remove({_id: "4"}, true)
2.7 Count()
db.collection.count(<query>)
Query – 类型:文档;用于查询选择过滤。
db.user.count({age: 1})
2.8 Distinct()
db.collection.distinct(field, query)
Field – 类型:字符串;返回非重复的字段。
Query – 类型:文档;查询条件。
db.user.distinct("_id", {age: 1})
相关推荐
本教程将详细介绍如何使用Java与MongoDB进行交互,包括基本的增删改查(CRUD)操作。首先,我们需要引入MongoDB的Java驱动程序,这通常通过Maven或Gradle的依赖管理来实现。 1. **添加依赖** 在Maven的`pom.xml`...
通过学习和实践这些示例,你将能够熟练地在Java应用程序中与MongoDB进行交互,进行数据的增删改查操作。在实际项目中,你可能还需要关注错误处理、连接池管理、事务支持等方面,以确保应用程序的健壮性和性能。
在"mongodb的小例子,增删改查,分页"这个主题中,我们将深入探讨MongoDB的基本操作,包括数据的插入(增)、查询(查)、更新(改)以及删除(删),同时还会涉及到数据分页这一重要的数据检索技术。 1. 数据插入...
在本项目中,我们将探讨如何使用MongoDB进行数据的增删改查操作,以及如何结合前端页面、IntelliJ IDEA开发环境、Thymeleaf模板引擎和MyBatis持久层框架来构建一个完整的应用程序。 首先,让我们深入了解MongoDB的...
本教程将详细介绍如何使用Java进行MongoDB的基本操作,包括增(添加数据)、删(删除数据)、改(修改数据)和查(查询数据)。 首先,你需要在项目中引入MongoDB的Java驱动程序。目前最新的稳定版本是`mongodb-...
在Java开发中,我们可以使用MongoDB的Java驱动程序来实现对MongoDB数据库的增、删、改、查(CRUD)操作。以下是对这些核心功能的详细说明。 1. **增加(Create)** 要在MongoDB中插入数据,我们需要使用`...
在这个“MongoDb增删改查的网站范例”中,我们将探讨如何利用Spring Data项目和MongoDB适配器进行数据库操作。 Spring Data是一个强大的框架,它简化了与各种数据存储系统的交互,包括MongoDB。Spring Data MongoDB...
本教程将详细介绍如何使用C#访问MongoDB,实现基本的增删改查操作。 首先,我们需要在C#项目中引入MongoDB的驱动程序。MongoDB官方提供了`MongoDB.Driver`库,可以通过NuGet包管理器安装。在Visual Studio中,右键...
本篇将详细讲解如何使用C#实现对MongoDB的增删改查操作,并提供经过测试验证的源代码。 首先,我们需要引入MongoDB的C#驱动程序,它提供了与MongoDB数据库进行通信的类和方法。在NuGet包管理器中,可以搜索并安装`...
在Java应用程序中,我们可以使用MongoDB Java驱动程序来与MongoDB进行交互,执行基本的数据库操作,如增(添加)、删(删除)、改(更新)和查(查询)。下面将详细介绍这些操作。 1. 添加(Add) 要向MongoDB集合...
在本文中,我们将深入探讨如何使用Node.js连接MongoDB数据库并实现基本的增删改查操作。MongoDB是一个流行的文档型数据库系统,而Node.js则是一个JavaScript运行环境,非常适合构建实时、高性能的网络应用。结合...
本篇文章将详细讲解如何使用Java连接到MongoDB数据库,并进行基本的增删改查操作。 首先,连接MongoDB需要引入MongoDB的Java驱动程序。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....
java对mongodb数据库的增删改查测试demo。可直接运行,需要自己安装mongodb数据库,需要手动添加bins包下面的jdbc的jar包和junit4的jar包。包含自己写的mongodb安装文档。
### Java操作MongoDB进行增删改查详解 #### 一、引言 在现代软件开发中,非关系型数据库如MongoDB因其灵活性和扩展性而备受青睐。Java作为一种广泛使用的编程语言,在操作MongoDB时提供了丰富的API支持。本文将详细...
mongodb学习笔记资料,从安装到操作库collection 对document的crud 索引 replicaSet sharding 备份与恢复
在本案例"MongoDB增删改查操作案例-用户信息增删改查.zip"中,我们将探讨如何使用MongoDB进行基本的数据操作,包括添加(Add)、删除(Delete)、修改(Update)和查询(Query)用户信息。 1. 添加操作(Add): 在...
mongodb mongod.exe:数据库进程本身,是核心数据库服务器 mongo.exe:命令行Shell客户端,用于确保所有内容都已正常安装且能正常运行 可以对数据进行 CRUD操作、执行管理任务等
自己在学习MongoDB的一些笔记,里面有各个查询选择器的使用截图,还有一些索引的介绍。
以上就是使用Node.js操作MongoDB实现增删改查的基本步骤。随着对这两个技术的深入理解和实践,你将能够构建更复杂、功能丰富的应用程序。请参考提供的文章链接以获取更多细节和示例,同时持续学习和探索Node.js和...
本源码提供了一个基于Html的crud-express-mongodb增删改查设计。项目包含1586个文件,其中...这个项目是一个基于crud-express-mongodb的增删改查系统,可能包括数据的增删改查等功能,适合用于需要进行数据操作的场景。