MongoDB 索引索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可能要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
在 MongoDB 中,常见的索引类型包括:单字段索引:基于单个字段的索引。复合索引:基于多个字段组合的索引。文本索引:用于支持全文搜索。地理空间索引:用于地理空间数据的查询。哈希索引:用于对字段值进行哈希处理的索引。
创建索引MongoDB 使用 createIndex() 方法来创建索引。注意在 3.0.0 版本前创建索引方法为 db.collection.ensureIndex(),之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 还能用,但只是 createIndex() 的别名。语法createIndex() 方法基本语法格式如下所示:
db. ...
MongoDB 管理工具: RockmongoRockMongo是PHP5写的一个MongoDB管理工具。通过 Rockmongo 你可以管理 MongoDB服务,数据库,集合,文档,索引等等。它提供了非常人性化的操作。类似 phpMyAdmin(PHP开发的MySql管理工具)。Rockmongo 下载地址:https://github.com/iwind/rockmongo
简介主要特征:
使用宽松的New BSD License协议速度快,安装简单支持多语言(目前提供中文、英文、日文、巴西葡萄牙语、法语、德语、俄语、意大利语)系统
可以配置多个主机,每个主机可以有多个管理员需要管理员密码才能登入操作,确保数据库的安全性
服务器
服务器信息 (WEB服务器, PHP, PHP.ini相关指令 …)状态数据库信息
数据库
查询,创建和删除执行命令和Javascript代码统计信息
集合(相当于表)
强大的查询工具读数据,写数据,更改数据,复制数据,删除数据查询、创建和删除索引清空数据批量删除和更改数据统计信息
GridFS
查看分块下载文件
安装需求一个能运行PHP的Web服务器,比 ...
MongoDB 监控在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能。这样在大流量得情况下可以很好的应对并保证MongoDB正常运作。MongoDB中提供了mongostat 和 mongotop 两个命令来监控MongoDB的运行情况。
mongostat 命令mongostat是mongodb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。
启动你的Mongod服务,进入到你安装的MongoDB目录下的bin目录,然后输入mongostat命令,如下所示:
D:\set up\mongodb\bin>mongostat
以上命令输出结果如下:
mongotop 命令
mongotop也是mongodb下的一个内置工具,mongotop提供了一个方法,用来跟踪一个MongoDB的实例,查看哪些大量的时间花费在读取和写入数据。 mongotop提供每个集合的水平的统计 ...
MongoDB 用户管理
在 MongoDB 中进行用户管理涉及用户的创建、分配角色、认证和登录等操作。下面是一个详细的说明,包含如何使用 MongoDB Shell (mongo) 或 MongoDB Compass 来管理用户。
使用 MongoDB Shell (mongo) 管理用户以下是使用 MongoDB Shell (mongosh) 进行用户管理的详细说明,包括创建用户、分配角色、认证和登录的具体步骤。
连接到 MongoDB首先,打开你的终端并使用 mongosh 命令连接到 MongoDB 服务器:
mongosh –host –port 说明:mongosh:启动 MongoDB Shell 命令行工具。–host :指定 MongoDB 服务器的主机名或 IP 地址。:MongoDB 服务器的主机名(如 localhost)或 IP 地址(如 127.0.0.1)。–port :指定 MongoDB 服务器的端口号。:MongoDB 服务器监听的端口号,默认端口是 27017。
切换到目标数据库在 MongoDB 中,用户是针对特定数据库创建的,使用 u ...
MongoDB 正则表达式正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。许多程序设计语言都支持利用正则表达式进行字符串操作。MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。
MongoDB使用PCRE (Perl Compatible Regular Expression) 作为正则表达式语言。不同于全文检索,我们使用正则表达式不需要做任何配置。考虑以下 posts 集合的文档结构,该文档包含了文章内容和标签:
{ “post_text”: “enjoy the mongodb articles on runoob”, “tags”: [ “mongodb”, “runoob” ]}
使用正则表达式以下命令使用正则表达式查找包含 runoob 字符串的文章:
db.posts.find({post_text:{$regex:”runoob”}})
以上查询也可以写为:
db.posts.find({post_text:/runoob/})
不区分大小写的正则表达式如果检索需要不 ...
MongoDB 概念解析不管我们学习什么数据库都应该学习其中的基础概念,在 MongoDB 中基本的概念是文档、集合、数据库,下面我们挨个介绍。下表将帮助您更容易理解 MongoDB 中的一些概念:
SQL 术语/概念MongoDB 术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins 表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键
通过下图实例,我们也可以更直观的了解Mongo中的一些概念:
完整术语列表:
文档(Document):MongoDB 的基本数据单元,通常是一个 JSON-like 的结构,可以包含多种数据类型。
集合(Collection):类似于关系型数据库中的表,集合是一组文档的容器。在 MongoDB 中,一个集合中的文档不需要有一个固定的模式。
数据 ...
MongoDB 查询文档MongoDB 查询文档使用 find()、findOne() 方法。find() 方法以非结构化的方式来显示所有文档。语法MongoDB 查询数据的语法格式如下:db.collection.find(query, projection)query:用于查找文档的查询条件。默认为 {},即匹配所有文档。projection(可选):指定返回结果中包含或排除的字段。查找所有文档:实例db.myCollection.find();
按条件查找文档:实例db.myCollection.find({ age: { $gt: 25 } });
按条件查找文档,并只返回指定字段:实例db.myCollection.find( { age: { $gt: 25 } }, { name: 1, age: 1, _id: 0 });
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。实例db.col.find().pretty(){ ...
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 ...