MongoDB极简教程
- 格式:docx
- 大小:521.99 KB
- 文档页数:14
mongodb基础操作MongoDB是一个NoSQL数据库,具有灵活的数据模型和强大的查询功能。
下面是一些常见的MongoDB基础操作:1. 连接到MongoDB服务器:使用命令mongo或mongosh连接到MongoDB服务器。
2. 创建数据库:使用命令use <database-name>创建一个新的数据库。
如果数据库不存在,则会自动创建。
3. 创建集合:使用命令db.createCollection(<collection-name>)在当前数据库中创建一个新的集合。
4. 插入文档:使用命令db.<collection-name>.insertOne(<document>)或db.<collection-name>.insertMany(<documents>)插入一个或多个文档到指定集合中。
5. 查询文档:使用命令db.<collection-name>.find(<query>)查询符合条件的文档。
可以使用各种查询运算符(filter operators)来定义查询条件。
6. 更新文档:使用命令db.<collection-name>.updateOne(<filter>, <update>)或db.<collection-name>.updateMany(<filter>, <update>)更新符合条件的文档。
7. 删除文档:使用命令db.<collection-name>.deleteOne(<filter>)或db.<collection-name>.deleteMany(<filter>)删除符合条件的文档。
8. 索引操作:使用命令db.<collection-name>.createIndex(<index>)创建索引,可以提高查询性能。
mongodb 教程MongoDB是一个开源的非关系型数据库系统,它是由C++语言编写而成的。
与传统的关系型数据库不同,MongoDB采用了文档型数据模型,使用BSON(Binary JSON)格式来存储和查询数据。
MongoDB具有以下特点:1. 高性能:MongoDB采用了内存映射文件的存储引擎,拥有高性能的读写速度。
此外,MongoDB还支持主从复制和分片存储,可以通过水平扩展来提升系统性能。
2. 简单易用:MongoDB采用面向文档的数据模型,数据以文档的形式存储在集合(Collection)中,不需要像传统关系型数据库那样提前定义表结构。
这使得数据的插入和更新非常简单和灵活。
3. 可扩展性:MongoDB可以通过分片(Sharding)技术将数据分散存储在多台服务器上,从而实现数据的横向扩展。
这有效地解决了大规模数据存储和查询的问题。
4. 查询语言:MongoDB提供了丰富的查询操作符和聚合管道,方便开发人员进行复杂的数据查询和分析操作。
同时,MongoDB还支持基于地理位置的查询,使得地理信息系统的开发变得简单和高效。
5. 数据安全:MongoDB支持数据的备份和恢复功能,可以定期将数据备份到远程服务器,以防止数据丢失。
此外,MongoDB还提供了访问控制和权限管理,可以设定不同用户的访问权限,保证数据的安全性。
总的来说,MongoDB是一种强大而灵活的数据库系统,适用于大部分的应用场景。
无论是小型网站还是大型企业系统,MongoDB都能提供高性能和可扩展的数据存储和查询功能。
如果你正准备学习MongoDB,可以通过官方文档或在线教程来了解更多关于MongoDB的知识和应用。
mongodb 数据库基本操作
MongoDB 是一种NoSQL 数据库系统,使用BSON(Binary JSON)格式存储数据。
下面是MongoDB 的基本操作指南:
1. 连接到MongoDB 数据库
使用MongoDB 的客户端mongoshell 可以连接上本地数据库、远程数据库或者MongoDB Atlas 等服务。
2. 创建数据库或集合
MongoDB 使用的是以其独有的方式命名的数据库和集合,在mongoshell 中可以创建一个新的数据库或集合。
3. 插入数据
在MongoDB 中,数据以文档的方式存储。
可在mongoshell 中插入新数据或用程序编写插入数据的语句。
4. 查询数据
可以使用mongoshell 中提供的查询语言,如find(),可在其中指定查询条件和结果集的排序等信息。
5. 更新数据
使用update() 方法可以轻松地更新数据。
6. 删除数据
在MongoDB 中,使用remove() 方法可以删除数据。
还可以使用drop() 方法删除整个集合。
7. 索引
MongoDB 中的索引与传统关系型数据库中的索引类似,可提高查询语句的执行效率。
8. 备份和恢复数据
MongoDB 提供了备份和恢复数据库的工具,您可以选择在定期备份数据来保护数据库。
以上是MongoDB 数据库的基本操作指南,需要根据应用场景和业务需求进行具体操作。
mongodb 教程MongoDB 是一种面向文档的 NoSQL 数据库。
它使用 JSON 格式存储数据,并具有以下特点:1. 轻松的扩展性:MongoDB 可以通过分布式架构轻松地垂直和水平扩展,以满足单个应用程序的不断增长的需求。
2. 高性能:MongoDB 的设计使其能够在大型数据集上快速进行查询,同时提供高可用性和低延迟。
3. 灵活性:相比传统的关系型数据库,MongoDB 具有更灵活的数据模型。
你可以根据应用程序的需求自由地修改和更新数据结构,而无需遵循事先定义的模式。
4. 强大的查询语言:MongoDB 支持丰富的查询语言,包括范围查询、正则表达式查询、内嵌文档查询等。
5. 自动的分片和负载均衡:MongoDB 可以自动将数据分布在多台服务器上,并且在负载不平衡时进行自动负载均衡。
下面是使用 MongoDB 的基本操作示例:1. 连接到数据库:使用 MongoDB 的客户端工具(如 mongo shell 或者 MongoDB Compass)连接到数据库服务器。
2. 创建数据库:使用 `use` 命令来创建一个新数据库,例如`use mydb`。
3. 创建集合:使用 `db.createCollection()` 命令创建一个新集合,例如 `db.createCollection("mycollection")`。
4. 插入文档:使用 `db.collection.insertOne()` 或`db.collection.insertMany()` 命令插入一个或多个文档到集合中。
5. 查询文档:使用 `db.collection.find()` 命令查询集合中的文档。
你可以使用各种查询操作符和条件来过滤结果。
6. 更新文档:使用 `db.collection.updateOne()` 或`db.collection.updateMany()` 命令来更新集合中符合条件的文档。
mongodb教程MongoDB教程MongoDB是一种开源的、面向文档的NoSQL数据库管理系统。
它以高性能、高可扩展性和易用性而闻名,是当今最受欢迎的NoSQL数据库之一。
本文将介绍MongoDB的基本概念、使用方法和常见操作等内容,帮助读者快速上手和应用MongoDB。
1. MongoDB简介MongoDB是由MongoDB公司开发和维护的一个开源项目。
它是一个面向文档的数据库,数据以BSON(Binary JSON)格式存储,支持丰富的数据结构,包括文档、数组、嵌套文档等。
MongoDB采用基于分布式文件存储的方式,支持水平扩展和高可用性。
它适用于处理海量数据和高并发访问的场景。
2. 安装和配置MongoDB要使用MongoDB,首先需要安装和配置它。
MongoDB提供了针对多个操作系统的安装包和二进制文件,安装过程相对简单。
安装完成后,可以通过编辑配置文件来配置MongoDB的参数,例如端口号、数据库存储路径等。
默认情况下,MongoDB会将数据存储在/var/lib/mongodb目录下。
3. 连接和运行MongoDB安装和配置完成后,可以使用命令行或图形界面工具连接和运行MongoDB。
MongoDB提供了丰富的命令行工具,例如mongo、mongodump、mongorestore等,它们可以用于数据库的管理和操作。
此外,还有许多第三方的可视化工具,例如Robo 3T、MongoDB Compass等,它们提供了更友好的界面和更多的功能。
4. 数据库和集合的操作在MongoDB中,数据库是用于存储数据的容器,而集合则是一组相关的文档。
可以使用命令行或图形界面工具创建数据库和集合,并对其进行增删改查等操作。
例如,使用db.createCollection()命令可以创建一个新的集合,使用db.collection.insertOne()和db.collection.insertMany()命令可以插入一个或多个文档,使用db.collection.find()命令可以查询文档。
MongoDB的基本使用方法MongoDB是一种NoSQL数据库,它非常适合处理大量结构松散的数据。
相较于传统的关系型数据库,它更加灵活,易于扩展。
本文将分为以下几个章节,介绍MongoDB的基本使用方法。
一、安装MongoDBMongoDB的官方网站提供了多种操作系统的安装包,用户可以选择适合自己的版本进行下载。
安装完成之后,需要配置MongoDB的环境变量,方便在终端中直接使用MongoDB命令。
二、启动MongoDB在终端输入"mongod"命令来启动MongoDB,并且默认会使用"/data/db"作为默认数据存储路径。
如果需要修改默认的数据存储路径,可以在启动时添加"--dbpath"参数,例如"mongod --dbpath/user/local/mongodb_data"。
三、连接MongoDB在终端中输入"mongo"命令可以进行与MongoDB的连接,并且默认连接到本地的MongoDB。
如果需要连接到远程的MongoDB,需要通过"mongo host:port"命令进行连接,其中host为MongoDB的IP地址,port为其端口号。
四、数据的增删改查MongoDB是一种文档型数据库,其数据以文档形式进行存储。
一条文档就是一个键值对集合,文档可以包含嵌套的文档,以及数组类型的值。
MongoDB提供了丰富的CRUD操作来实现数据的增删改查。
1.插入数据MongoDB中,可以通过insert()或者save()方法来插入一条数据。
例如:ers.insert({name:"Tom",age:18});或者:ers.save({_id:1,name:"Tom",age:18});其中,insert()和save()操作的区别在于,当插入数据的唯一标识已经存在时,insert()方法会直接报错,而save()方法则会将数据替换。
mongodb 基础教学-回复MongoDB 是一种流行的NoSQL 数据库,它是开源的,使用JSON 风格的文档进行数据存储。
它的设计目标是供大规模、高性能的数据存储和处理需求使用。
本文将介绍MongoDB 的基本概念和使用方法,帮助读者理解并开始使用MongoDB。
1. 什么是MongoDB?MongoDB 是一个面向文档的数据库管理系统。
与传统的关系型数据库不同,MongoDB 使用文档代替了行和列,文档以JSON 或BSON 的形式存储。
MongoDB 以文档为单位进行数据存储和查询,文档可以是不同结构和属性的,这使得MongoDB 在处理半结构化数据非常灵活和高效。
2. 安装和配置MongoDB首先,我们需要下载并安装MongoDB 软件包。
根据所使用的操作系统,可以在MongoDB 官方网站找到对应的安装包,并按照安装指南进行安装。
安装完成后,需要进行一些配置。
首先,创建一个空文件夹作为MongoDB 的数据存储位置。
然后,使用配置文件指定数据目录和其他参数:storage:dbPath: /path/to/data/dbsystemLog:destination: filepath: /path/to/mongodb.lognet:bindIp: 127.0.0.1配置完成后,启动MongoDB 服务器。
3. 数据库和集合MongoDB 中的数据存储在数据库中,数据库由集合组成,而集合则由文档组成。
可以将数据库理解为关系型数据库中的数据库,集合类似于表,文档类似于表中的行。
在MongoDB 中,可以使用以下命令来创建数据库和集合:use mydb 创建名为mydb 的数据库db.createCollection("mycollection") 在mydb 数据库中创建名为mycollection 的集合4. 插入文档插入文档是向MongoDB 中添加数据的常用操作。
mongodb操作手册MongoDB是一种流行的文档型数据库,逐渐成为许多公司的首选。
但是,操作MongDB可能对新手来说有些棘手。
下面将为你提供MongoDB操作手册,以帮助你更高效地操作MongoDB。
1. 安装MongoDB首先,你需要安装MongoDB。
在MongoDB官网下载传递给操作系统的安装包(Windows、Linux或Mac OS),然后按照安装向导完成安装。
2. 启动MongoDB一旦安装完成,你便可以启动MongoDB。
在命令行中输入mongod 命令,这将启动MongoDB服务。
mongodb://localhost:27017是默认的MongoDB连接字符串。
这将启动默认的MongoDB实例,并连接到localhost上的端口27017。
3. 创建数据库当你成功启动MongoDB服务之后,你可以创建你的数据库。
使用MongoDB的命令createDatabase()可以轻松创建一个新的数据库。
只需在命令行中输入以下命令:> use mydatabasemydatabase是你所创建的数据库名称。
4. 插入数据在创建数据库之后,你可以开始向数据库中插入数据。
使用insert()命令,可以将数据插入到指定的集合中。
如下所示:> db.myCollection.insert( { name: "Tom", age: 25 } )这将在myCollection集合中插入一条数据。
注意,如果指定的集合还不存在,MongoDB会自动创建该集合。
5. 查询数据当你插入了许多数据之后,你可能需要查询数据。
使用find()命令,可以查找指定集合中的数据。
如下所示:> db.myCollection.find()这将为你提供myCollection集合中的所有文档。
你也可以使用过滤器,如下所示:> db.myCollection.find( { name: "Tom" } )这将为你提供名称为Tom的所有文档。
MongoDB基础教程第一部分翻译原因网上的相关说明别说中文了连英文都很少,而且有的基本上就是一些简单的配置,加上最近时间比较多,有点想做,所以就做了。
致谢先感谢国家,谢谢国家对我的培养,再感谢组织,感谢我的公司给我了研究MongoDB 的机会,让我有时间去研究了MongoDB,最后感谢父母的养育之恩。
温馨提示我以下所有示例都是建立在Java语言的基础上,只作java语言的介绍,其他语言类似。
概述MongoDB是一个基于分布式文件存储的数据库。
由C++语言编写。
旨在为WEB应用提供可护展的高性能数据存储解决方案。
它的特点是高性能、易部署、易使用,存储数据非常方便。
主要功能特性有:*面向集合存储,易存储对象类型的数据。
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性*支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
*文件存储格式为BSON(一种JSON的扩展)*可通过网络访问所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。
每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。
集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。
如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
存储在集合中的文档,被存储为键-值对的形式。
键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。
我们称这种存储形式为BSON(Binary SerializeddOcument Format)。
MongoDB基础教程[菜鸟教程整理]MongoDB基础教程======================================================================================================= 1.MongoDB 创建数据库> use runoob;> db.runoob.insert({"name":"菜鸟教程"});> show dbs;======================================================================================================= 2.MongoDB 删除数据库> use runoob;> db.dropDatabase();> show dbs;======================================================================================================= 3.MongoDB 插⼊⽂档db.COLLECTION_NAME.insert(document);> db.col.insert({title: 'MongoDB 教程'});> db.col.find();> document=({title: 'MongoDB 教程'});> db.col.insert(document) or > db.col.save(document);======================================================================================================= 4.MongoDB 更新⽂档db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>});> db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}});#以上语句只会修改第⼀条发现的⽂档,如果你要修改多条相同的⽂档,则需要设置 multi 参数为 true.> db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true});> db.col.find().pretty();#只更新第⼀条记录:db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );#全部更新:db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );#只添加第⼀条:db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );#全部添加加进去:db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );#全部更新:db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );#只更新第⼀条记录:db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );======================================================================================================= 5.MongoDB 删除⽂档db.collection.remove(<query>,{justOne: <boolean>,writeConcern: <document>});> db.col.remove({'title':'MongoDB 教程'});#如果你只想删除第⼀条找到的记录可以设置 justOne 为 1,如下所⽰:> db.COLLECTION_NAME.remove(DELETION_CRITERIA,1);#如果你想删除所有数据,可以使⽤以下⽅式(类似常规 SQL 的 truncate 命令):>db.col.remove({});>db.col.find();======================================================================================================= 6.MongoDB 查询⽂档> db.COLLECTION_NAME.find();#结构化显⽰> db.col.find().pretty();#操作格式范例 RDBMS中的类似语句等于 {<key>:<value>} db.col.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程'⼩于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50⼩于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50⼤于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50⼤于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50#MongoDB AND 条件> db.col.find({key1:value1, key2:value2}).pretty();> db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty();#类似于 WHERE 语句:WHERE by='菜鸟教程' AND title='MongoDB 教程'#MongoDB OR 条件> db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty();> db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty();#AND 和 OR 联合使⽤> db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty();#类似常规 SQL 语句为: 'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')';======================================================================================================= 7.MongoDB 条件操作符#MongoDB (>) ⼤于操作符 - $gt> db.col.find({"likes" : {$gt : 100}});#类似于SQL语句:Select * from col where likes > 100;#MongoDB(>=)⼤于等于操作符 - $gte> db.col.find({likes : {$gte : 100}});#类似于SQL语句:Select * from col where likes >=100;#MongoDB (<) ⼩于操作符 - $lt> db.col.find({likes : {$lt : 150}});#类似于SQL语句:Select * from col where likes < 150;#MongoDB (<=) ⼩于操作符 - $lte> db.col.find({likes : {$lte : 150}});#类似于SQL语句:Select * from col where likes <= 150;#MongoDB 使⽤ (<) 和 (>) 查询 - $lt 和 $gt> db.col.find({likes : {$lt :200, $gt : 100}})#类似于SQL语句:Select * from col where likes>100 AND likes<200;======================================================================================================= 8.MongoDB $type 操作符#$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
1.MongDB 简介MongoDB是专为可扩展性,高性能和高可用性而设计的数据库。
它可以从单服务器部署扩展到大型、复杂的多数据中心架构。
利用内存计算的优势,MongoDB 能够提供高性能的数据读写操作。
MongoDB 的本地复制和自动故障转移功能使您的应用程序具有企业级的可靠性和操作灵活性。
1.1 文档型数据库简而言之,MongoDB是一个免费开源跨平台的NoSQL 数据库,与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储:{name: "我没有三颗心脏",age: 22,}文档型的数据存储方式有几个重要好处:1.文档的数据类型可以对应到语言的数据类型,如数组类型(Array)和对象类型(Object);2.文档可以嵌套,有时关系型数据库涉及几个表的操作,在 MongoDB 中一次就能完成,可以减少昂贵的连接花销;3.文档不对数据结构加以限制,不同的数据结构可以存储在同一张表;4.MongoDB 的文档数据模型和索引系统能有效提升数据库性能;5.复制集功能提供数据冗余,自动化容灾容错,提升数据库可用性;6.分片技术能够分散单服务器的读写压力,提高并发能力,提升数据库的可拓展性;7.M ongoDB 高性能,高可用性、可扩展性等特点。
1.2 MongoDB 基础概念可以使用我们熟悉的 MySQL 数据库来加以对比:)的图来更加形象生动的说明一下:这很容易理解,但是问题在于:我们为什么要引入新的概念呢?(也就是为什么我们要把“表”替换成“集合”,“行”替换成“文档”,“列”替换成“域”呢?)原因在于,其实在MySQL 这样的典型关系型数据中,我们是在定义表的时候定义列的,但是由于上述文档型数据库的特点,它允许文档的数据类型可以对应到语言的数据类型,所以我们是在定义文档的时候才会定义域的。
也就是说,集合中的每个文档都可以有独立的域。
因此,虽说集合相对于表来说是一个简化了的容器,而文档则包含了比行要多得多的信息。
2 搭建环境怎么样都好,搭建好环境就行,这里以OS 环境为例,你可以使用OSX 的brew 安装 mongodb:brew install mongodb在运行之前我们需要创建一个数据库存储目录/data/db:sudo mkdir -p /data/db然后启动 mongodb,默认数据库目录即为/data/db(如果不是,可以使用--dbpath指令来指定):sudo mongd过一会儿你就能看到你的 mongodb 运行起来的提示:3 基于 Shell 的 CRUD3.1 连接实例通过上面的步骤我们在系统里运行了一个mongodb 实例,接下来通过mongo命令来连接它:mongo [options] [db address] [file names]由于上面运行的 mongodb 运行在 27017 端口,并且灭有启动安全模式,所以我们也不需要输入用户名和密码就可以直接连接:mongo 127.0.0.1:27017或者通过--host和--port选项指定主机和端口。
一切顺利的话,就进入了 mongoDB shell,shell会报出一连串权限警告,不过不用担心,这并不会影响之后的操作。
在添加授权用户和开启认证后,这些警告会自动消失。
3.2 CRUD 操作在进行增删改查操作之前,我们需要先了解一下常用的shell命令:•db 显示当前所在数据库,默认为test•show dbs 列出可用数据库•show tables show collections 列出数据库中可用集合•use 用于切换数据库mongoDB 预设有两个数据库,admin 和local,admin 用来存放系统数据,local 用来存放该实例数据,在副本集中,一个实例的local 数据库对于其它实例是不可见的。
使用 use 命令切换数据库:> use admin> use local> use newDatabase可以use 一个不存在的数据库,当你存入新数据时,mongoDB 会创建这个数据库:> use newDatabase> db.newCollection.insert({x:1})WriteResult({ "nInserted" : 1 })以上命令向数据库中插入一个文档,返回 1 表示插入成功,mongoDB 自动创建newCollection 集合和数据库newDatabase。
下面将对增查改删操作进行一个简单的演示。
3.2.1 创建(Create)MongoDB 提供insert方法创建新文档:•db.collection.inserOne() 插入单个文档WriteResult({ "nInserted" : 1 })•db.collection.inserMany() 插入多个文档•db.collection.insert() 插入单条或多条文档我们接着在刚才新创建的 newDatabase 下面新增数据吧:db.newCollection.insert({name:"wmyskxz",age:22})根据以往经验应该会觉得蛮奇怪的,因为之前在这个集合中插入的数据格式是{x:1}的,而这里新增的数据格式确是{name:"wmyskxz",age:22}这个样子的。
还记得吗,文档型数据库的与传统型的关系型数据的区别就是在这里!并且要注意,age:22和age:"22"是不一样的哦,前者插入的是一个数值,而后者是字符串,我们可以通过db.newCollection.find()命令查看到刚刚插入的文档:> db.newCollection.find(){ "_id" : ObjectId("5cc1026533907ae66490e46c"), "x" : 1 } { "_id" : ObjectId("5cc102fb33907ae66490e46d"), "name" : "wm yskxz", "age" : 22 }这里有一个神奇的返回,那就是多了一个叫做_id的东西,这是MongoDB 为你自动添加的字段,你也可以自己生成。
大部分情况下还是会让 MongoDB 为我们生成,而且默认情况下,该字段是被加上了索引的。
3.2.2 查找(Read)MongoDB 提供find方法查找文档,第一个参数为查询条件:> db.newCollection.find() # 查找所有文档{ "_id" : ObjectId("5cc1026533907ae66490e46c"), "x" : 1 } { "_id" : ObjectId("5cc102fb33907ae66490e46d"), "name" : "wm yskxz", "age" : 22 }> db.newCollection.find({name:"wmyskxz"}) # 查找name 为wmyskxz 的文档{ "_id" : ObjectId("5cc102fb33907ae66490e46d"), "name" : "wm yskxz", "age" : 22 }> db.newCollection.find({age:{$gt:20}}) # 查找age 大于20 的文档{ "_id" : ObjectId("5cc102fb33907ae66490e46d"), "name" : "wm yskxz", "age" : 22 }上述代码中的$gt对应于大于号>的转义。
第二个参数可以传入投影文档映射数据:>db.newCollection.find({age:{$gt:20}},{name:1}){ "_id" : ObjectId("5cc102fb33907ae66490e46d"), "name" : "wmyskxz"}上述命令将查找age大于 20 的文档,返回name字段,排除其他字段。
投影文档中字段为 1 或其他真值表示包含,0 或假值表示排除,可以设置多个字段位为 1 或 0,但不能混合使用。
为了测试,我们为这个集合弄了一些奇奇怪怪的数据:>db.newCollection.find(){ "_id" : ObjectId("5cc1026533907ae66490e46c"), "x" : 1 }{ "_id" : ObjectId("5cc102fb33907ae66490e46d"), "name" : "wmyskxz", "age" : 22 }{ "_id" : ObjectId("5cc108fb33907ae66490e46e"), "name" : "wmyskxz-test", "age" : 22, "x" : 1, "y" : 30 }然后再来测试:>db.newCollection.find({age:{$gt:20}},{name:1,x:1}){ "_id" : ObjectId("5cc102fb33907ae66490e46d"), "name" : "wmyskxz"}{ "_id" : ObjectId("5cc108fb33907ae66490e46e"), "name" : "wmyskxz-test", "x" : 1 }>db.newCollection.find({age:{$gt:20}},{name:0,x:0}){ "_id" : ObjectId("5cc102fb33907ae66490e46d"), "age" : 22 } { "_id" : ObjectId("5cc108fb33907ae66490e46e"), "age" : 22, "y": 30 }>db.newCollection.find({age:{$gt:20}},{name:0,x:1})Error: error: {"ok" : 0,"errmsg" : "Projection cannot have a mix of inclusion an d exclusion.","code" : 2,"codeName" : "BadValue"}从上面的命令我们就可以把我们的一些想法和上面的结论得以验证,perfect!除此之外,还可以通过count、skip、limit等指针(Cursor)方法,改变文档查询的执行方式:>db.newCollection.find().count()3>db.newCollection.find().skip(1).limit(10).sort({age:1}){ "_id" : ObjectId("5cc102fb33907ae66490e46d"), "name" : "wmyskxz", "age" : 22 }{ "_id" : ObjectId("5cc108fb33907ae66490e46e"), "name" : "wmyskxz-test", "age" : 22, "x" : 1, "y" : 30 }上述查找命令跳过 1 个文档,限制输出 10 个,以age子段正序排序(大于 0 为正序,小于 0 位反序)输出结果。