MongoDB 插入文档

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

语法

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

  1. >db.COLLECTION_NAME.insert(document)

例如:

  1. db.mycol.insert(
  2. {
  3. title: 'MongoDB Overview',
  4. description: 'MongoDB is no sql database',
  5. by: 'tutorials itcast',
  6. url: 'http://www.itcast.cn',
  7. tags: ['mongodb', 'database', 'NoSQL'],
  8. likes: 100
  9. }
  10. )
  11. db.mycol.insert(
  12. {
  13. title: 'MySQL Overview',
  14. description: 'MySQL is sql database',
  15. by: 'tutorials itcast',
  16. url: 'http://www.itcast.cn',
  17. tags: ['MySQL', 'database', 'SQL'],
  18. likes: 40
  19. }
  20. )

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

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

  1. > db.mycol.find().pretty()
  2. {
  3. "_id" : ObjectId("57d78d91b1a3e5f874cfe47a"),
  4. "title" : "MongoDB Overview",
  5. "description" : "MongoDB is no sql database",
  6. "by" : "tutorials itcast",
  7. "url" : "http://www.itcast.cn",
  8. "tags" : [
  9. "mongodb",
  10. "database",
  11. "NoSQL"
  12. ],
  13. "likes" : 100
  14. }
  15. {
  16. "_id" : ObjectId("57d78d98b1a3e5f874cfe47b"),
  17. "title" : "MySQL Overview",
  18. "description" : "MySQL is sql database",
  19. "by" : "tutorials itcast",
  20. "url" : "http://www.itcast.cn",
  21. "tags" : [
  22. "MySQL",
  23. "database",
  24. "SQL"
  25. ],
  26. "likes" : 40
  27. }

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

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

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

  1. db.mycol.insert(
  2. [
  3. {
  4. title: 'sqlserver',
  5. description: 'sqlserver is sql database',
  6. by: 'tutorials itcast',
  7. url: 'http://www.itcast.cn',
  8. tags: ['sqlserver', 'database', 'SQL'],
  9. likes: 40
  10. },
  11. {
  12. title: 'oracle',
  13. description: 'oracle is sql database',
  14. by: 'tutorials itcast',
  15. url: 'http://www.itcast.cn',
  16. tags: ['oracle', 'database', 'SQL'],
  17. likes: 40
  18. }
  19. ]
  20. )

insert() 或 save()区别

1. 插入的文档的无_id

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

  1. db.col.insert(
  2. {
  3. title: 'oracle',
  4. description: 'oracle is sql database',
  5. }
  6. )
  7. db.col.save(
  8. {
  9. title: 'oracle',
  10. description: 'oracle is sql database',
  11. }
  12. )

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 StatementsMongoDB insert() Statements
  1. INSERT INTO users(user_id, age, status)VALUES ("bcd001", 45, "A")
  1. db.users.insert( { user_id: "bcd001", age: 45, status: "A" })