MongoDB 插入文档

  • 插入文档

    在本章中,我们将学习如何在MongoDB集合中插入文档。
  • insert()方法

    要将数据插入MongoDB集合,您需要使用MongoDB的insert()save()方法。
    语法
     
    >db.COLLECTION_NAME.insert(document)
    
    示例
     
    db.users.insert({
     _id : ObjectId("507f191e810c19729de860ea"),
     title: "MongoDB Overview",
     description: "MongoDB is no sql database",
     by: "菜鸟教程",
     url: "http://www.cainiaoya.com",
     tags: ['mongodb', 'database', 'NoSQL'],
     likes: 100
    })
    WriteResult({ "nInserted" : 1 })
    
    users集合如果不存在会自动创建。
    在插入的文档中,如果不指定_id参数,则MongoDB会为此文档分配一个唯一的ObjectId。_id是集合中每个文档唯一的12字节十六进制数。12个字节划分如下-
     
    _id: ObjectId(4 字节 时间戳, 3 字节 机器id, 2 字节 进程id, 3 字节自增)
    
    您还可以将文档数组传递到insert()方法中,如下所示:
     
    db.post.insert([
      {
        title: "MongoDB Overview",
        description: "MongoDB is no SQL database",
        by: "菜鸟教程",
        url: "http://www.cainiaoya.com",
        tags: ["mongodb", "database", "NoSQL"],
        likes: 100
      },
      {
      title: "NoSQL Database",
      description: "NoSQL database doesn't have tables",
      by: "菜鸟教程",
      url: "http://www.cainiaoya.com",
      tags: ["mongodb", "database", "NoSQL"],
      likes: 20,
      comments: [
        {
          user:"user1",
          message: "My first comment",
          dateCreated: new Date(2013,11,10,2,35),
          like: 0
        }
      ]
    }
    ])
    
    要插入文档,您也可以使用db.post.save(document)。如果未在文档中指定_id,则save()方法将与insert()方法相同。如果指定_id,则它将替换save()方法中指定的包含_id的文档的整个数据。
  • insertOne()方法

    如果只需要将一个文档插入到集合中,则可以使用此方法。
    语法
     
    >db.COLLECTION_NAME.insertOne(document)
    
    示例
    下面的示例创建一个名为empDetails的新集合,并使用insertOne()方法插入一个文档。
     
    db.createCollection("empDetails")
    
     
    db.empDetails.insertOne(
      {
        First_Name: "Radhika",
        Last_Name: "Sharma",
        Date_Of_Birth: "2019-12-26",
        e_mail: "radhika_sharma.123@gmail.com",
        phone: "9848022338"
      })
    
  • insertMany()方法

    您可以使用insertMany()方法插入多个文档。对于此方法,您需要传递一个文档数组。
    以下示例使用insertMany()方法将三个不同的文档插入empDetails集合。
     
    db.empDetails.insertMany(
      [
        {
          First_Name: "Radhika",
          Last_Name: "Sharma",
          Date_Of_Birth: "2019-09-26",
          e_mail: "radhika_sharma.123@qq.com",
          phone: "9000012345"
        },
        {
          First_Name: "Rachel",
          Last_Name: "Christopher",
          Date_Of_Birth: "2018-02-16",
          e_mail: "Rachel_Christopher.123@qq.com",
          phone: "9000054321"
        },
        {
          First_Name: "Fathima",
          Last_Name: "Sheik",
          Date_Of_Birth: "2016-02-16",
          e_mail: "Fathima_Sheik.123@qq.com",
          phone: "9000054321"
        }
      ]
    )