MongoDB 新增文档
创建完数据库和集合后,我们需要将数据插入到 MongoDB 的集合中。MongoDB 的文档等同于关系数据库的记录。
MongoDB 文档以 BSON 格式存储在集合中,数据结构和 JSON 基本一样。
BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。
1. MongoDB 新增文档的语法
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document) 或 db.COLLECTION_NAME.save(document)
- insert(): 如果插入数据的 _id 主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
- save():如果插入数据的 _id 主键存在则更新数据,如果不存在就插入数据。
3.2 版本之后新增了 db.collection.insertOne() 和 db.collection.insertMany(),这两个方法可以代替 save()。
db.collection.insertOne() 用于向集合插入一个新文档,语法格式如下:
db.collection.insertOne( <document>, { writeConcern: <document> } )
db.collection.insertMany() 用于向集合插入一个多个文档,语法格式如下:
db.collection.insertMany( [ <document 1> , <document 2>, ... ], { writeConcern: <document>, ordered: <boolean> } )
参数说明:
- document:要写入的文档。
- writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
- ordered:指定是否按顺序写入,默认 true,按顺序写入。
2. MongoDB 新增文档的实例
以下文档可以存储在 MongoDB 的 aizws 数据库 的 col 集合中:
>db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '编程教程', url: 'http://www.aizws.net', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
以上实例中 col 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。
查看已插入文档:
> db.col.find() { "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "编程教程", "url" : "http://www.aizws.net", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } >
我们也可以将数据定义为一个变量,如下所示:
> document=({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '编程教程', url: 'http://www.aizws.net', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 });
执行后显示结果如下:
{ "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "编程教程", "url" : "http://www.aizws.net", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
执行插入操作:
> db.col.insert(document) WriteResult({ "nInserted" : 1 }) >
插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
下一章:MongoDB 删除文档
MongoDB remove() 函数是用来移除集合中的数据。在执行 remove() 函数前先执行 find() 命令来判断执行的条件是否正确,这是一个比较好的习惯。MongoDB 删除文档的语法:remove() 方法的基本语法格式如下所示:db.collection.remove( <query>, <justOne>)