MongoDB 使用手册 - 入门
本教程将引导您将测试数据插入 MongoDB 数据库并使用文档的嵌入式 Web shell 查询该数据。您无需部署或安装 MongoDB 即可完成本教程。
1. 切换数据库
在shell中,db指的是您当前的数据库。键入db以显示当前数据库。
db
该操作应返回test,这是默认数据库。
要切换数据库,请键入use
use examples
切换前无需创建数据库。MongoDB 在您第一次在该数据库中存储数据时创建数据库(例如在数据库中创建第一个集合)。
要验证您的数据库现在是,请在上面的shellexamples中键入。db
db
2.插入
填充集合(插入)
MongoDB 将文档存储在集合中。集合类似于关系数据库中的表。如果集合不存在,MongoDB 会在您首次存储该集合的数据时创建该集合。
下面的示例使用该 db.collection.insertMany()
方法将新 文档插入到 movies
集合中。您可以将示例复制并粘贴到上面的 shell 中。
db.movies.insertMany([
{
title: 'Titanic',
year: 1997,
genres: [ 'Drama', 'Romance' ],
rated: 'PG-13',
languages: [ 'English', 'French', 'German', 'Swedish', 'Italian', 'Russian' ],
released: ISODate("1997-12-19T00:00:00.000Z"),
awards: {
wins: 127,
nominations: 63,
text: 'Won 11 Oscars. Another 116 wins & 63 nominations.'
},
cast: [ 'Leonardo DiCaprio', 'Kate Winslet', 'Billy Zane', 'Kathy Bates' ],
directors: [ 'James Cameron' ]
},
{
title: 'The Dark Knight',
year: 2008,
genres: [ 'Action', 'Crime', 'Drama' ],
rated: 'PG-13',
languages: [ 'English', 'Mandarin' ],
released: ISODate("2008-07-18T00:00:00.000Z"),
awards: {
wins: 144,
nominations: 106,
text: 'Won 2 Oscars. Another 142 wins & 106 nominations.'
},
cast: [ 'Christian Bale', 'Heath Ledger', 'Aaron Eckhart', 'Michael Caine' ],
directors: [ 'Christopher Nolan' ]
},
{
title: 'Spirited Away',
year: 2001,
genres: [ 'Animation', 'Adventure', 'Family' ],
rated: 'PG',
languages: [ 'Japanese' ],
released: ISODate("2003-03-28T00:00:00.000Z"),
awards: {
wins: 52,
nominations: 22,
text: 'Won 1 Oscar. Another 51 wins & 22 nominations.'
},
cast: [ 'Rumi Hiiragi', 'Miyu Irino', 'Mari Natsuki', 'Takashi Naitè' ],
directors: [ 'Hayao Miyazaki' ]
},
{
title: 'Casablanca',
genres: [ 'Drama', 'Romance', 'War' ],
rated: 'PG',
cast: [ 'Humphrey Bogart', 'Ingrid Bergman', 'Paul Henreid', 'Claude Rains' ],
languages: [ 'English', 'French', 'German', 'Italian' ],
released: ISODate("1943-01-23T00:00:00.000Z"),
directors: [ 'Michael Curtiz' ],
awards: {
wins: 9,
nominations: 6,
text: 'Won 3 Oscars. Another 6 wins & 6 nominations.'
},
lastupdated: '2015-09-04 00:22:54.600000000',
year: 1942
}
])
该操作返回一个包含确认指示符的文档和一个包含 _id
每个成功插入的文档的数组。
3. 全部查询
选择所有文件
要从集合中选择文档,可以使用 db.collection.find()
方法。要选择集合中的所有文档,请将一个空文档作为查询过滤器文档传递给该方法。
在shell中,复制并粘贴以下内容以返回movies 集合中的所有文档。
db.movies.find( { } )
4. 过滤数据
使用比较运算符过滤数据
对于相等匹配 ( <field>
equals <value>
),<field>: <value>
在查询过滤器文档中指定并传递给 db.collection.find()
方法。
在shell中,运行以下查询以查找导演的电影 Christopher Nolan
:
db.movies.find( { "directors": "Christopher Nolan" } );
您可以使用比较运算符 来执行更高级的查询:
- 运行以下查询以返回该年之前发布的电影
2000
:
db.movies.find( { "released": { $lt: ISODate("2000-01-01") } } );
- 运行以下查询以返回赢得多个
100
奖项的电影:
db.movies.find( { "awards.wins": { $gt: 100 } } );
- 运行以下查询以返回
languages
数组包含 or 的 电影:JapaneseMandarin
db.movies.find( { "languages": { $in: [ "Japanese", "Mandarin" ] } } )
也可以看看:查询和投影运算符
5. 项目领域
指定要返回的字段(投影)
要指定要返回的字段,请将投影文档传递给该 db.collection.find(<query document>, <projection document>)
方法。在投影文档中,指定:
<field>: 1
在返回的文档中包含一个字段<field>: 0
排除返回文档中的字段
在shell中,运行以下查询以返回集合中所有文档的 id
、title
、directors
和 year
字段:movies
db.movies.find( { }, { "title": 1, "directors": 1, "year": 1 } );
您不必指定 _id
字段即可返回该字段。它默认返回。要排除该字段,请 0
在投影文档中将其设置为。例如,运行以下查询以仅返回匹配文档中的title
, 和字段:genres
db.movies.find( { }, { "_id": 0, "title": 1, "genres": 1 } );
6. 聚合
汇总数据 ( $group
)
您可以使用聚合将多个文档中的值组合在一起并返回单个结果。MongoDB 中的聚合是使用聚合管道执行的。
虽然 find()
操作对于数据检索很有用,但聚合管道允许您操作数据、执行计算以及编写比简单的CRUD 操作更具表现力的查询。
在shell中,运行以下聚合管道来计算每个 genre
值的出现次数:
db.movies.aggregate( [
{ $unwind: "$genres" },
{
$group: {
_id: "$genres",
genreCount: { $count: { } }
}
},
{ $sort: { "genreCount": -1 } }
] )
管道使用:
$unwind
为 genres
数组中的每个元素输出一个文档。
$group
和$count
累加器来计算每个 genre
. 该值存储在 genreCount
字段中。
$sort genreCount
按字段降序对结果文档进行排序。
设置您自己的部署
要设置您自己的部署:
部署 | 描述 |
---|---|
MongoDB Atlas 免费层集群 | MongoDB Atlas 是一种快速、简单且免费的 MongoDB 入门方式。要了解更多信息,请参阅 Atlas 入门教程。 |
本地 MongoDB 安装 | 有关在本地安装 MongoDB 的更多信息,请参阅 安装 MongoDB。 |
其他示例
有关其他示例,包括 MongoDB 驱动程序特定示例(Python、Java、Node.js 等),请参阅:
查询文档示例
更新文档示例
删除文档示例
其他主题
介绍 | 开发者 | 管理员 | 参考 |
---|---|---|---|
MongoDB简介 | CRUD 操作 | 生产说明 | 外壳方法 |
安装指南 | 聚合 | 副本集 | 查询运算符 |
数据库和集合 | SQL 到 MongoDB | 分片集群 | 参考 |
文件 | 索引 | MongoDB安全 | 词汇表 |