MongoDB 更新文档在 MongoDB 中,更新文档的操作可以使用多种方法实现,常用的方法包括 updateOne()、updateMany()、replaceOne() 和 findOneAndUpdate()。1、updateOne()updateOne() 方法用于更新匹配过滤器的单个文档。语法:db.collection.updateOne(filter, update, options)filter:用于查找文档的查询条件。update:指定更新操作的文档或更新操作符。options:可选参数对象,如 upsert、arrayFilters 等。实例db.myCollection.updateOne( { name: “Alice” }, // 过滤条件 { $set: { age: 26 } }, // 更新操作 { upsert: false } // 可选参数);
2、updateMany()updateM ...
MongoDB 数据库引用在上一章节MongoDB关系中我们提到了MongoDB的引用来规范数据结构文档。MongoDB 引用有两种:
手动引用(Manual References)DBRefs
DBRefs vs 手动引用考虑这样的一个场景,我们在不同的集合中 (address_home, address_office, address_mailing, 等)存储不同的地址(住址,办公室地址,邮件地址等)。这样,我们在调用不同地址时,也需要指定集合,一个文档从多个集合引用文档,我们应该使用 DBRefs。
使用 DBRefsDBRef的形式:
{ $ref : , $id : , $db : }
三个字段表示的意义为:
$ref:集合名称$id:引用的id$db:数据库名称,可选参数
以下实例中用户数据文档使用了 DBRef, 字段 address:
{ “_id”:ObjectId(“53402597d852426020000002”), “address”: { “$ref”: “address_home”, “$id”: ObjectId(“534009e4d ...
MongoDB 教程
MongoDB是一个流行的开源文档型数据库,它使用类似 JSON 的文档模型存储数据,这使得数据存储变得非常灵活。MongoDB 是一个基于文档的 NoSQL 数据库,由 MongoDB Inc. 开发。MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。现在开始学习 MongoDB!
MongoDB 特点
MongoDB 的一些关键特点:
文档导向:MongoDB 存储 BSON(二进制 JSON)文档,这些文档可以包含复杂的数据结构,如数组和嵌套对象。
高性能:MongoDB 提供了高性能的数据持久化和查询能力,特别是对于写入密集型的应用。
水平扩展:通过分片(sharding)技术,MongoDB 可以在多个服务器之间分布数据,实现水平扩展。
高可用性:MongoDB 支持副本集(replica sets),提供数据的自动故障转移和数据冗余。
灵活的聚合框架:MongoDB 提供了一个强大的聚合框架,允许执行复杂的数据处理和聚合操 ...
MongoDB 插入文档本章节中我们将向大家介绍如何将数据插入到 MongoDB 的集合中。文档的数据结构和 JSON 基本一样。所有存储在集合中的数据都是 BSON 格式。BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。常用的插入文档方法包括:
db.collection.insertOne():插入单个文档db.collection.insertMany():插入多个文档db.collection.save():类似于 insertOne()。如果文档存在,则该文档会被更新;如果文档不存在,则会插入一个新文档。
1、insertOne()insertOne() 方法用于在集合中插入单个文档。db.collection.insertOne(document, options)
document:要插入的单个文档。
options(可选):一个可选参数对象,可以包含 writeConcern 和 bypassDocumentValidation 等。实例db.myCollection.insertOne({ name: “Alice” ...
MongoDB 排序在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。语法sort()方法基本语法如下所示:
db.collection.find().sort({ field1: 1, field2: -1 }){ field1: 1, field2: -1 }:指定要排序的字段及排序顺序。1 表示升序,-1 表示降序。实例
按字段升序排序:实例// 按 age 字段升序排序db.myCollection.find().sort({ age: 1 });
按字段降序排序:实例// 按 createdAt 字段降序排序db.myCollection.find().sort({ createdAt: -1 });
可以指定多个字段进行排序,MongoDB 将按照指定的字段顺序依次排序。实例// 先按 age 字段升序排序,再按 createdAt 字段降序排序db.myCollect ...
MongoDB 复制(副本集)MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。复制还允许您从硬件故障和服务中断中恢复数据。
什么是复制?
保障数据的安全性数据高可用性 (24*7)灾难恢复无需停机维护(如备份,重建索引,压缩)分布式读取数据
MongoDB复制原理mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
mongodb各个节点常见的搭配方式为:一主一从、一主多从。主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
MongoDB复制结构图如下所示:
以上结构图中,客户端从主节点读取数据,在客户端写入数据到主节点时,主节点与从节点进行数据交互保障数据的一致性。
副本集特征:
N 个节点的集群任何节点可作为主节点所有写入操作都在主节点上自动故障转移自动恢复
MongoDB副本集设置在本教程中我们使用同一个MongoDB来做 ...
MongoDB 备份(mongodump)与恢复(mongorestore)
MongoDB数据备份在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。 mongodump命令可以通过参数指定导出的数据量级转存的服务器。语法mongodump命令脚本语法如下:
mongodump -h dbhost -d dbname -o dbdirectory
-h:MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
实例在本地使用 27017 启动你的mongod服务。打开命令提示符窗口,进入MongoDB安装目录的bin目录输入命令mongodump:
mongodump
执行以上命令后,客户端会连接到ip为 127.0.0.1 端口号为 270 ...
MongoDB 固定集合(Capped Collections)MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素!
创建固定集合我们通过createCollection来创建一个固定集合,且capped选项设置为true:
db.createCollection(“cappedLogCollection”,{capped:true,size:10000})
还可以指定文档个数,加上max:1000属性:
db.createCollection(“cappedLogCollection”,{capped:true,size:10000,max:1000})
判断集合是否为固定集合:
db.cappedLogCollection.isCapped()
如果需要将已存在的集合转换为固定集合可以使用以下命令:
db.runCommand({“convertToCapped”:”posts”,size:10000})
以上代码将我们 ...
MongoDB 原子操作mongodb不支持事务,所以,在你的项目中应用时,要注意这点。无论什么设计,都不要要求mongodb保证数据的完整性。但是mongodb提供了许多原子操作,比如文档的保存,修改,删除等,都是原子操作。所谓原子操作就是要么这个文档保存到Mongodb,要么没有保存到Mongodb,不会出现查询到的文档没有保存完整的情况。
原子操作数据模型考虑下面的例子,图书馆的书籍及结账信息。
实例说明了在一个相同的文档中如何确保嵌入字段关联原子操作(update:更新)的字段是同步的。
book = { _id: 123456789, title: “MongoDB: The Definitive Guide”, author: [ “Kristina Chodorow”, “Mike Dirolf” ], published_date: ISODate(“2010-09-24”), pages: 216, language: “English”, ...
MongoDB 删除文档在前面的几个章节中我们已经学习了 MongoDB 中如何为集合添加数据和更新数据,在本章节中我们将继续学习 MongoDB 集合的删除。常用的删除文档方法包括 deleteOne()、deleteMany() 以及 findOneAndDelete()。使用场景:数据清理:删除不再需要的旧数据或无效数据。数据修正:在数据修正过程中删除错误的或重复的文档。自动化任务:在自动化脚本或任务中,根据特定条件删除文档。1、deleteOne()deleteOne() 方法用于删除匹配过滤器的单个文档。
语法:db.collection.deleteOne(filter, options)filter:用于查找要删除的文档的查询条件。options(可选):一个可选参数对象。实例db.myCollection.deleteOne({ name: “Alice” });
返回结果:{ “acknowledged”: true, “deletedCount”: 1}2、deleteMany()deleteMany() 方法用于删除所有匹配过滤器的文档。语法:db.c ...