MongoDB-插入文档

时间:2020-02-23 14:40:50  来源:igfitidea点击:

在此MongoDB教程中,我们将学习插入文档。

插入一个文档

要将一个文档插入到集合中,我们使用db.collection.insertOne()方法。

注意! " collection"是要其中插入文档的集合的名称。

在以下示例中,我们将一个文档插入到学生集合中。

> db.students.insertOne({
  "firstname": "",
  "lastname": "",
  "studentid": "s01"
});

成功的话,我们会在终端上得到类似的响应。

{
  "acknowledged" : true,
  "insertedId" : ObjectId("5d16c693e8cb73839ac9f2ec")
}

注意! insertId是MongoDB赋予集合中每个文档的唯一ID(主键)。

为了获取集合中插入的文档,我们使用find()方法。

> db.students.find()
{ "_id" : ObjectId("5d16c693e8cb73839ac9f2ec"), "firstname" : "", "lastname" : "", "studentid" : "s01" }

我们将在"查询文档"教程中了解有关find()的更多信息。

插入多个文件

要插入多个文档,我们使用db.collection.insertMany()方法。

在下面的示例中,我们将在学生集合中插入多个文档。

> db.students.insertMany([
  {
    "firstname": "Jane",
    "lastname": "Doe",
    "studentid": "s02"
  },
  {
    "firstname": "John",
    "lastname": "Doe",
    "studentid": "s03"
  }
]);

成功的话,我们将得到以下回应。

{
  "acknowledged" : true,
  "insertedIds" : [
    ObjectId("5d16c6e5e8cb73839ac9f2ed"),
    ObjectId("5d16c6e5e8cb73839ac9f2ee")
  ]
}

如果现在运行find()方法,我们将得到以下输出。

> db.students.find()
{ "_id" : ObjectId("5d16c693e8cb73839ac9f2ec"), "firstname" : "", "lastname" : "", "studentid" : "s01" }
{ "_id" : ObjectId("5d16c6e5e8cb73839ac9f2ed"), "firstname" : "Jane", "lastname" : "Doe", "studentid" : "s02" }
{ "_id" : ObjectId("5d16c6e5e8cb73839ac9f2ee"), "firstname" : "John", "lastname" : "Doe", "studentid" : "s03" }

插入多个具有不同字段的文档

在MongoDB中,我们可以插入具有不同数量字段的文档。

在下面的示例中,我们将在学生集合中插入两个新文档。
第一个文档具有"分数"字段。
第二个文档具有" date_of_birth"字段。

> db.students.insertMany([
  {
    "firstname": "Alice",
    "lastname": "Doe",
    "studentid": "s04",
    "score": 10.5
  },
  {
    "firstname": "Bob",
    "lastname": "Doe",
    "studentid": "s05",
    "date_of_birth": new Date("2000-01-01")
  }
]);

" date_of_birth"为" new Date(" <YYYY-mm-dd>")格式,并返回具有指定日期的ISODate。

如果现在使用find().pretty()方法获取文档,我们将得到以下输出。

> db.students.find().pretty()
{
  "_id" : ObjectId("5d16c9e9e8cb73839ac9f2f1"),
  "firstname" : "",
  "lastname" : "",
  "studentid" : "s01"
}
{
  "_id" : ObjectId("5d16c9efe8cb73839ac9f2f2"),
  "firstname" : "Jane",
  "lastname" : "Doe",
  "studentid" : "s02"
}
{
  "_id" : ObjectId("5d16c9efe8cb73839ac9f2f3"),
  "firstname" : "John",
  "lastname" : "Doe",
  "studentid" : "s03"
}
{
  "_id" : ObjectId("5d16ca23e8cb73839ac9f2f4"),
  "firstname" : "Alice",
  "lastname" : "Doe",
  "studentid" : "s04",
  "score" : 10.5
}
{
  "_id" : ObjectId("5d16ca23e8cb73839ac9f2f5"),
  "firstname" : "Bob",
  "lastname" : "Doe",
  "studentid" : "s05",
  "date_of_birth" : ISODate("2000-01-01T00:00:00Z")
}

" pretty()"方法以易于阅读的格式返回结果。

插入嵌入/嵌套的文档

在MongoDB中,我们可以将文档包含在文档中(嵌入式/嵌套文档)。

在下面的示例中,我们将在学生集合中插入一个新文档,它具有一个新字段" contact_phone",该字段具有自己的字段-值对。

> db.students.insertOne({
  "firstname": "Eve",
  "lastname": "Doe",
  "studentid": "s06",
  "contact_phone": {
    "primary": {
      "number": "+919800000000",
      "name": "Bill Doe",
      "relation": "Father"
    },
    "secondary": [
      {
        "number": "+919800000001",
        "name": "Mac Doe",
        "relation": "Brother"
      }
    ]
  }
});

如果现在运行find()方法,我们将得到以下输出。

> db.students.find().pretty();
{
  "_id" : ObjectId("5d16c9e9e8cb73839ac9f2f1"),
  "firstname" : "",
  "lastname" : "",
  "studentid" : "s01"
}
{
  "_id" : ObjectId("5d16c9efe8cb73839ac9f2f2"),
  "firstname" : "Jane",
  "lastname" : "Doe",
  "studentid" : "s02"
}
{
  "_id" : ObjectId("5d16c9efe8cb73839ac9f2f3"),
  "firstname" : "John",
  "lastname" : "Doe",
  "studentid" : "s03"
}
{
  "_id" : ObjectId("5d16ca23e8cb73839ac9f2f4"),
  "firstname" : "Alice",
  "lastname" : "Doe",
  "studentid" : "s04",
  "score" : 10.5
}
{
  "_id" : ObjectId("5d16ca23e8cb73839ac9f2f5"),
  "firstname" : "Bob",
  "lastname" : "Doe",
  "studentid" : "s05",
  "date_of_birth" : ISODate("2000-01-01T00:00:00Z")
}
{
  "_id" : ObjectId("5d16cfa4e8cb73839ac9f2f6"),
  "firstname" : "Eve",
  "lastname" : "Doe",
  "studentid" : "s06",
  "contact_phone" : {
    "primary" : {
      "number" : "+919800000000",
      "name" : "Bill Doe",
      "relation" : "Father"
    },
    "secondary" : [
      {
        "number" : "+919800000001",
        "name" : "Mac Doe",
        "relation" : "Brother"
      }
    ]
  }
}

在下一个教程中,我们将学习查询文档。