首页 > 代码库 > MongoDB笔记(二)

MongoDB笔记(二)

一、数据插入删除

技术分享

    (1)Insert函数:db.集合名.insert(obj,opts)obj要插入的文档,ops为可选参数可用来设置写安全级别。

    1.insert函数只能作用于一个集合。

    2.如果集合不存在,数据库服务会自动创建目标集合。

    3.插入文档时如果没有指定_id字段,数据库服务会自动创建ObjectId对象作为_id的值。

    (2)Bulk函数:用来批量处理插入和删除分为顺序Bulk和并行Bulk两种。

    1.初始化Bulk

    db.集合名.initializeUnorderedBulkOp()    并行Bulk

    db.集合名.initializeOrderedBulkOp()    顺序Bulk

    2.向Bulk中添加数据更新操作

    Bulk.insert()、Bulk.find.update()、Bulk.find.remove()。

    3.执行更新操作

    调用Bulk.execute()

    (3)Remove函数:db.集合名.remove(query,justOne)query为查询条件,指明要删除的文档,空的的话会删除所有文档。justone可选参数,使用该参数,只会删除满足条件的一个文档。

    (4)MMAPv1内存分配:如果一个更新操作超过了文档在磁盘上的预分配的空间,MongoDB将会重新在磁盘上为其分配一块更大的连续空间。然后将原来的数据复制到新的空间中。


二、MongoDB文档修改

    (1)Update函数

    db.集合名.update(query,obj,upset,multi)。

    query查询条件,相当于SQL中的where。

    obj更改的内容相当于SQL中的set。

    upsert当查询条件query指明的文档不存在时,是否需要插入一条新文档{upsert:true}。

    multi当查询条件query返回多个文档时,是否需要一次更新所有满足条件的文档{multi:true}。

    (2)更新操作符

技术分享


技术分享

技术分享


三、MongoDB写安全机制

    (1)写过程:当使用insert/update/remove/save等操作更新集合中的数据时,只是更改了数据在内存中的映像,数据并没有同步的保存在磁盘上,在更新内存中的数据之前,更新操作会被记录到journal日志文件中。

技术分享

    (2)MongoDB提供了四种级别的写入安全机制分别是:

    Unacknowledged    非确认式写入(不返回结果,无法知道是否写入成功)

    Acknowledged    确认式写入(返回结果)(只能确认写入成功到内存中)

    Journaled    日志写入 (可以判断是否写入到磁盘中)

    Replica Acknowledged    复制集确认式写入(写操作不仅要主节点写入确认,还得得到从节点的写入确认)

    这四种安全机制按顺序增高,效率降低。

技术分享

MongoDB笔记(二)