MongoDB 覆盖索引查询官方的MongoDB的文档中说明,覆盖查询是以下的查询:
所有的查询字段是索引的一部分所有的查询返回字段在同一个索引中
由于所有出现在查询中的字段是索引的一部分,MongoDB 无需在整个数据文档中检索匹配查询条件和返回使用相同索引的查询结果。
因为索引存在于RAM中,从索引中获取数据比通过扫描文档读取数据要快得多。
使用覆盖索引查询为了测试覆盖索引查询,使用以下 users 集合:
{ “_id”: ObjectId(“53402597d852426020000002”), “contact”: “987654321”, “dob”: “01-01-1991”, “gender”: “M”, “name”: “Tom Benzamin”, “user_name”: “tombenzamin”}
我们在 users 集合中创建联合索引,字段为 gender 和 user_name :
db.users.createIndex({gender:1,user_name:1})
注:5.0 之前版本可以使用 db.collection ...
MongoDB 自动增长MongoDB 没有像 SQL 一样有自动增长的功能,MongoDB 的 _id 是系统自动生成的12字节唯一标识。但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在 counters 集合中实现_id字段自动增长。
使用 counters 集合考虑以下 products 文档。我们希望 _id 字段实现从 1,2,3,4 到 n 的自动增长功能。
{ “_id”:1, “product_name”: “Apple iPhone”, “category”: “mobiles”}
为此,创建 counters 集合,序列字段值可以实现自动长:
db.createCollection(“counters”)
现在我们向 counters 集合中插入以下文档,使用 productid 作为 key:
{ “_id”:”productid”, “sequence_value”: 0}
sequence_value 字段是序列通过自动增长后的一个值。使用以下命 ...
MongoDB 聚合MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似 SQL 语句中的 count(*)。
aggregate() 方法MongoDB中聚合的方法使用aggregate()。语法aggregate() 方法的基本语法格式如下所示:
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
实例集合中的数据如下:
{ _id: ObjectId(7df78ad8902c) title: ‘MongoDB Overview’, description: ‘MongoDB is no sql database’, by_user: ‘runoob.com’, url: ‘http://www.runoob.com‘, tags: [‘mongodb’, ‘database’, ‘NoSQL’], likes: 100},{ _id: ObjectId(7df78ad8902d) title: ‘NoSQL Overview’ ...
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(){ ...