当前位置:  首页>> 技术小册>> MongoDB入门教程

本章节中我们将向大家介绍如何将数据插入到 MongoDB 的集合中。

文档的数据结构和 JSON 基本一样。

所有存储在集合中的数据都是 BSON 格式。

BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

插入文档

MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:

  1. db.COLLECTION_NAME.insert(document)

  1. db.COLLECTION_NAME.save(document)

save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
3.2 版本之后新增了 db.collection.insertOne() 和 db.collection.insertMany()。

  1. db.collection.insertOne() 用于向集合插入一个新文档,语法格式如下:
  2. db.collection.insertOne(
  3. <document>,
  4. {
  5. writeConcern: <document>
  6. }
  7. )
  8. db.collection.insertMany() 用于向集合插入一个多个文档,语法格式如下:
  9. db.collection.insertMany(
  10. [ <document 1> , <document 2>, ... ],
  11. {
  12. writeConcern: <document>,
  13. ordered: <boolean>
  14. }
  15. )

参数说明:

document:要写入的文档。
writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
ordered:指定是否按顺序写入,默认 true,按顺序写入。

实例
以下文档可以存储在 MongoDB 的 maxiaoke 数据库 的 col 集合中:

  1. >db.col.insert({title: 'MongoDB 教程',
  2. description: 'MongoDB 是一个 Nosql 数据库',
  3. by: '码小课教程',
  4. url: 'http://www.maxiaoke.com',
  5. tags: ['mongodb', 'database', 'NoSQL'],
  6. likes: 100
  7. })

以上实例中 col 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。

查看已插入文档:

  1. > db.col.find()
  2. { "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "码小课教程", "url" : "http://www.maxiaoke.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
  3. >

我们也可以将数据定义为一个变量,如下所示:

  1. > document=({title: 'MongoDB 教程',
  2. description: 'MongoDB 是一个 Nosql 数据库',
  3. by: '码小课教程',
  4. url: 'http://www.maxiaoke.com',
  5. tags: ['mongodb', 'database', 'NoSQL'],
  6. likes: 100
  7. });

执行后显示结果如下:

  1. {
  2. "title" : "MongoDB 教程",
  3. "description" : "MongoDB 是一个 Nosql 数据库",
  4. "by" : "码小课教程",
  5. "url" : "http://www.maxiaoke.com",
  6. "tags" : [
  7. "mongodb",
  8. "database",
  9. "NoSQL"
  10. ],
  11. "likes" : 100
  12. }

执行插入操作:

  1. > db.col.insert(document)
  2. WriteResult({ "nInserted" : 1 })
  3. >

插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。


该分类下的相关小册推荐: