插入并保存文档
插入是向MongoDB中添加数据的基本方法。
1 | >db.foo.insert({'bar':'baz'}) |
该操作会给文档增加一个”_id”键(如果原来没有),然后将其保存到MongoDB中。
当执行插入的时候,使用的驱动程序会将数据转换成BSON的形式,然后将其送入数据库。数据库解析BSON,检验是否包含’_id’键,并且文档不超过4MB。
删除文档
1 | >db.users.remove() |
上述命令会删除users集合中所有的文档。但不会删除集合本身,原有的索引也会保留。
remove函数可以接受一个查询文档作为可选参数。给定这个参数后,只有符合条件的文档才会被删除。删除数据是永久性的,不能撤销,也不能恢复。
删除速度
删除文档会很快,但是要清除整个集合,直接删除集合(然后重建索引)会更快。
更新文档
文档存入数据库以后,使用update方法修改。update有两个参数,一个是查询文档,用来找出需要更新的文档。另一个是修改器文档,描述对文档的哪些做更改。
更新操作是原子的,若是两个更新同时发生,先到达服务器的先执行。
1 | db.collection.update( |
其中:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
$set
$set 用来指定一个键的值,如果该键不存在就创建。$unset可以将键完全删除。
1 | db.getCollection('news').insert({title:'MongoDB学习','id': NumberInt(3), author: '2008'}) |
$set可以修改键的数据类型。
一定要使用以$开头的修改器来修改键值对。
$inc
$inc修改器用来增加已有键的值,或者在键不存在时创建一个键。
1 | db.getCollection('news').update({id: 3},{$inc:{score: 50}}) |
upsert
设置update的第三个参数,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
更新多个文档
设置update的第四个参数,默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。