MongoDB 使用手册 - 入门

本教程将引导您将测试数据插入 MongoDB 数据库并使用文档的嵌入式 Web shell 查询该数据。您无需部署或安装 MongoDB 即可完成本教程。

1. 切换数据库

shell中,db指的是您当前的数据库。键入db以显示当前数据库。

db

该操作应返回test,这是默认数据库。

要切换数据库,请键入use 。例如,要切换到examples数据库:

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中,运行以下查询以返回集合中所有文档的 idtitledirectorsyear 字段: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 } }
] )

管道使用:

$unwindgenres 数组中的每个元素输出一个文档。
$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安全 词汇表
posted @ 2022-04-25 10:30  Earen  阅读(530)  评论(0编辑  收藏  举报