MongoDB 插入文档

要插入数据到 MongoDB 集合,需要使用 MongoDB 的 insert() 或 save() 方法。

语法

insert() 命令的基本语法如下:

>db.COLLECTION_NAME.insert(document)

例如:

db.mycol.insert(
  {
     title: 'MongoDB Overview', 
     description: 'MongoDB is no sql database',
     by: 'tutorials itcast',
     url: 'http://www.itcast.cn',
     tags: ['mongodb', 'database', 'NoSQL'],
     likes: 100
  }
)

db.mycol.insert(
  {
     title: 'MySQL Overview', 
     description: 'MySQL is sql database',
     by: 'tutorials itcast',
     url: 'http://www.itcast.cn',
     tags: ['MySQL', 'database', 'SQL'],
     likes: 40
  }
)

这里 mycol 是集合的名称,如前面的教程中创建。如果集合在数据库中不存在,那么MongoDB 将创建此集合,然后把它插入文档。

插入文档中,如果我们不指定_id参数,然后MongoDB 本文档分配一个唯一的ObjectId。

> db.mycol.find().pretty()
{
  "_id" : ObjectId("57d78d91b1a3e5f874cfe47a"),
  "title" : "MongoDB Overview",
  "description" : "MongoDB is no sql database",
  "by" : "tutorials itcast",
  "url" : "http://www.itcast.cn",
  "tags" : [
    "mongodb",
    "database",
    "NoSQL"
  ],
  "likes" : 100
}
{
  "_id" : ObjectId("57d78d98b1a3e5f874cfe47b"),
  "title" : "MySQL Overview",
  "description" : "MySQL is sql database",
  "by" : "tutorials itcast",
  "url" : "http://www.itcast.cn",
  "tags" : [
    "MySQL",
    "database",
    "SQL"
  ],
  "likes" : 40
}

_id 是12个字节的十六进制数,唯一一个集合中的每个文档。 12个字节被划分如下:

_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)

要插入单个查询的多个文档,可以传递一个数组 insert() 命令的文件。

db.mycol.insert(
[
  {
     title: 'sqlserver', 
     description: 'sqlserver is sql database',
     by: 'tutorials itcast',
     url: 'http://www.itcast.cn',
     tags: ['sqlserver', 'database', 'SQL'],
     likes: 40
  },
  {
     title: 'oracle', 
     description: 'oracle is sql database',
     by: 'tutorials itcast',
     url: 'http://www.itcast.cn',
     tags: ['oracle', 'database', 'SQL'],
     likes: 40
  }
]
)

insert() 或 save()区别

1. 插入的文档的无_id

save() 方法等同于insert()方法

db.col.insert(
  {
     title: 'oracle', 
     description: 'oracle is sql database',
  }
)
db.col.save(
  {
     title: 'oracle', 
     description: 'oracle is sql database',
  }
)

2. 插入的文档的带有"_id"

如果想插入的数据对象已存在数据集合中,

insert函数会报错,提示E11000 duplicate key error collection

save函数是覆盖原来的对象

db.col.insert( { _id : 2016001, "name" : "guojing" } ) db.col.save( { _id : 2016001, "name" : "guojing" } )

如果想插入的数据对象不存在数据集合中:

insert和save等同

db.col.insert( { _id : 2016002, "name" : "huangrong" } ) db.col.save( { _id : 2016003, "name" : "dongxie" } )

插入 在MongoDB insert() 和SQL INSERT 区别

SQL INSERT Statements MongoDB insert() Statements
INSERT INTO users(user_id,
                  age,
                  status)
VALUES ("bcd001",
        45,
        "A")
db.users.insert(
   { user_id: "bcd001", age: 45, status: "A" }
)