📜  MongoDB –数据库,集合和文档

📅  最后修改于: 2021-04-17 02:51:15             🧑  作者: Mango

数据库,集合,文档是MongoDB的重要组成部分,没有它们,您将无法在MongoDB服务器上存储数据。数据库包含一个集合,而一个集合包含一个文档,而这些文档包含数据,它们是相互关联的。

数据库

在MongoDB中,数据库包含文档的集合。一个人可以在MongoDB服务器上创建多个数据库。

查看数据库:

要查看您的MongoDB服务器中存在多少个数据库,请在mongo shell中编写以下语句:

show dbs

例如:

在这里,我们重新启动了MongoDB,因此除了这三个默认数据库(即admin,config和local)之外,没有其他数据库。

数据库的命名限制:

在创建数据库之前,您应该首先了解数据库的命名限制:

  • 在MongoDB中,数据库名称不区分大小写,但是您必须始终记住,数据库名称不能仅因字符的大小写而不同。
  • 对于Windows用户,MongoDB数据库名称不能包含以下任何字符:
    /\. "$*:|?
  • 对于Unix和Linux用户,MongoDB数据库名称不能包含以下任何字符:
    /\. "$
  • MongoDB数据库名称不能包含空字符(在Windows,Unix和Linux系统中)。
  • MongoDB数据库名称不能为空,并且必须包含少于64个字符。

创建数据库:

在mongo shell中,您可以借助以下命令来创建数据库:

use database_name 

如果给定名称不存在并且给定名称存在,此命令实际上会将您切换到新数据库,然后它将切换到现有数据库。现在,在此阶段,如果使用show命令查看数据库列表,则会发现该数据库列表中不存在新数据库,因为在MongoDB中,当您开始在该数据库中输入数据时实际上已创建了该数据库。

例如:

在这里,我们使用use命令创建一个名为GeeksforGeeks的新数据库。在创建数据库后,当我们检查数据库列表时,由于没有在GeeksforGeeks数据库中输入任何数据,因此在该列表中找不到数据库。

收藏

集合就像关系数据库中的表一样,它们也存储数据,但是以文档的形式。一个数据库可以存储多个集合。

无模式:

众所周知,MongoDB数据库是无模式的。因此,在集合中不必一个文档的架构类似于另一个文档。换句话说,单个集合包含不同类型的文档,如下面的示例所示,其中mystudentData集合包含两种不同类型的文档:

命名限制:

在创建集合之前,您应该首先了解集合的命名限制:

  • 集合名称必须以下划线或字符开头。
  • 集合名称不包含$,空字符串,空字符,也不以系统开头。字首。
  • 集合名称的最大长度为120个字节(包括数据库名称,点分隔符和集合名称)。

创建集合:

创建数据库后,我们现在创建一个集合来存储文档。该集合是使用以下语法创建的:

db.collection_name.insertOne({..})

在这里, insertOne()函数用于将单个数据存储在指定的集合中。在花括号{}我们存储数据,或者换句话说,它是一个文档。

例如:

在此示例中,我们创建一个名为Author的集合,并在insertOne()函数的帮助下将数据插入其中。换句话说, {name: "Ankita"}是Author集合中的一个文档,在此文档中,名称是键或字段,而“ Ankita”是该键或字段的值。按下回车键后,我们收到一条消息(如上图所示),该消息告诉我们数据已成功输入(即“确认”:true),并且还为我们分配了一个自动创建的ID。 MongoDB提供的特殊功能是每个文档都提供一个唯一的ID,通常,此ID是自动创建的,但是您可以创建自己的ID(必须是唯一的)。

文档

在MongoDB中,数据记录存储为BSON文档。在这里,BSON代表JSON文档的二进制表示,尽管与JSON相比,BSON包含更多的数据类型。使用字段值对或键值对创建文档,并且字段值可以是任何BSON类型。

句法:

{ 
field1: value1
field2: value2
....
fieldN: valueN
}

字段命名限制:

在继续进行下一步之前,您应该了解字段的命名限制:

  • 字段名称是字符串。
  • _id字段名称保留为用作主键。并且该字段的值必须是唯一的,不可变的,并且可以是数组以外的任何类型。
  • 字段名称不能包含空字符。
  • 顶级字段名称不应以美元符号( $ )开头。

文档大小: BSON文档的最大大小为16MB。这样可以确保单个文档在传输过程中不会占用过多的RAM或带宽。如果文档包含的数据多于指定大小,则MongoDB提供GridFS API来存储此类文档。

重要笔记 –

  • 单个文档可能包含重复的字段。
  • MongoDB始终保存文档中字段的顺序,但_id字段(始终排在第一位)除外,并且字段的重命名可能会更改文档中字段的顺序。
  • _id字段:在MongoDB中,集合中的每个文档存储都必须包含一个唯一的_id字段,就像在关系数据库中的主键一样。 _id字段的值可以由用户或系统设置(如果用户未创建_id字段,则系统将自动为_id字段生成ObjectId )。
    • 创建集合时,MongoDB会自动在_id字段上创建唯一索引。
    • _id字段是每个文档的第一个字段。
    • _id字段的值可以是除阵列以外的任何BSON类型。
    • _id字段的默认值为ObjectId

范例1:

在这里,是字符串类型的名称,分支,课程和付费字段别名值。数量字段包含整数类型的值,并且_id字段由系统生成。

范例2:

在此, _id字段由用户创建。

提示:在函数中粘贴数据时,在将数据粘贴到函数中后,请始终使用右括号。如果在将数据粘贴到函数中之前使用右括号,则会出现错误。