MongoDB 查询分析MongoDB 查询分析可以确保我们所建立的索引是否有效,是查询语句性能分析的重要工具。MongoDB 查询分析常用函数有:explain() 和 hint()。
使用 explain()explain 操作提供了查询信息,使用索引及查询统计等。有利于我们对索引的优化。接下来我们在 users 集合中创建 gender 和 user_name 的索引:
db.users.ensureIndex({gender:1,user_name:1})
现在在查询语句中使用 explain :
db.users.find({gender:”M”},{user_name:1,_id:0}).explain()
以上的 explain() 查询返回如下结果:
{ “cursor” : “BtreeCursor gender_1_user_name_1”, “isMultiKey” : false, “n” : 1, “nscannedObjects” : 0, “nscanned” : 1, “nscannedObjectsAllPlans” ...
MongoDB 条件操作符描述条件操作符用于比较两个表达式并从 mongoDB 集合中获取数据。在本章节中,我们将讨论如何在 MongoDB 中使用条件操作符。这些操作符可以分为以下几类:比较操作符、逻辑操作符、元素操作符、数组操作符、以及其他常用操作符。比较操作符比较操作符有:操作符描述示例$eq等于{ age: { $eq: 25 } }$ne不等于{ age: { $ne: 25 } }$gt大于{ age: { $gt: 25 } }$gte大于等于{ age: { $gte: 25 } }$lt小于{ age: { $lt: 25 } }$lte小于等于{ age: { $lte: 25 } }$in在指定的数组中{ age: { $in: [25, 30, 35] } }$nin不在指定的数组中{ age: { $nin: [25, 30, 35] } }查找年龄大于 25 且城市为 “New York” 的文档:
db.myCollection.find({ age: { $gt: 25 }, city: “New York” });逻辑操作符逻辑操作符有:操作符描述示例 ...
MongoDB 更新集合名
在 MongoDB 中,不能直接通过命令来重命名集合。MongoDB 可以使用 renameCollection 方法来来重命名集合。renameCollection 方法在 MongoDB 的 admin 数据库中运行,可以将一个集合重命名为另一个名称。
renameCollection 命令的语法:db.adminCommand({ renameCollection: “sourceDb.sourceCollection”, to: “targetDb.targetCollection”, dropTarget: })参数说明:renameCollection:要重命名的集合的完全限定名称(包括数据库名)。to:目标集合的完全限定名称(包括数据库名)。dropTarget(可选):布尔值。如果目标集合已经存在,是否删除目标集合。默认值为 false。实例假设你要将 test 数据库中的 oldCollection 重命名为 newCollection,可以按以下步骤进行:
确保已连接到 test 数据库
use test2. 运行 rename ...
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 ...