
向MongoDB插入数据,使用insert,
如:db.refactor.insert({"refactor's blog":"http://www.cnblogs.com/refactor"})
这个 *** 作会给 文档 增加 一个"_id",键,并保存在数据库中。
批量插入
如果要插入多个文档,使用批量插入会快一些,批量化插入能传入一个有文档构成的数据给数据库
一次批量插入只是单个的TCP请求,避免了许多零碎的请求带来的开销.由于无需处理大量的消息头,
这样能减少插入时间.每当单个文档发送致数据库时,会有一个头部信息,告诉数据库对指定的集合做
插入 *** 作.用批量插入的话,数据库就不用重复的处理每个文档的这种头部信息了.
当前版本MongoDB消息的最大长度是16M,使用批量插入是有这个限制的.
插入的原理和作用
当执行插入的时候,使用的驱动程序会将数据转换成BSON的形式,然后将其送入数据库.数据库解析
BSON,检验是否包含"_id"键并且不超过16M,除此之外,不做别的验证,就只是简单的将文档原样的
存入数据库.这样做的坏处是允许插入无效的数据,好处是能让数据库更加安全,远离注入式攻击.
所有的主流语言的驱动会在传送数据之前进行一些数据的有效性检查(文档是否超长,是否含非utf-8的字符,
是否使用了未知类型).同样也可以启动数据库服务器的时候使用--objcheck选项,这样服务器就会在插入
之前先检验文档结构的有效性,当然这样要牺牲性能.
查看doc文档转化为BSON的大小(以字节为单位),在shell中使用Object.bsonsize(doc)
删除文档
db.users.remove()
会删除users集合的所有文档,但不会删除集合本身,原有的索引也会保留.
remove函数可以接受一个查询文档作为可选参数,给定这个参数,只有符合条件的文档才会被删除.
db.users.remove({"name":"Refactor"})
删除数据的永久性的,不能撤销和恢复.
如果要清除整个集合,直接删除集合(然后重建索引)比删除集合中所有的文档要快.
删除集合:db.drop_collection("users")
本章介绍,通过mongo shell,批量 *** 作(bulkWrite)MongoDB文档数据。这里的批量 *** 作不仅仅是前面章节提到的批量更新文档,MongoDB批量 *** 作支持同时执行一批写 *** 作,写 *** 作包括:插入文档、更新文档、删除文档。
mongo shell通过db.collection.bulkWrite()函数执行批量 *** 作。
批量 *** 作支持下面写 *** 作自由组合。
说明:
下面看一个综合里面,批量执行一批文档写 *** 作。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)