向集合中插入文档(insert方法)
MongoDB v3.2
1. 方法定义
db.collection.insert( <document or array of documents>, { writeConcern: <document>, ordered: <boolean> } )
第一个参数可以是一个文档,也可以是一个文档数组,即insert可以同时插入多条数据
第二个参数是一个文档,writeConcern表示进行写入操作时数据库的响应级别,ordered是一个布尔值,若为true,按顺序插入指定数组中的document,如果其中一个document插入时出现错误,直接返回,剩下的document不再处理;若为false,会忽略错误继续插入剩下的文档。默认为true。
另外,在向集合插入文档时,若文档不存在,则自动创建。若插入的文档中未指定_id字段,则自动生成。
2. 返回值
插入单个文档,返回WriteResult对象;插入多个文档,返回BulkWriteResult对象。
插入成功时返回:
WriteResult({ "nInserted" : 1 })
nInserted表示插入的数量
若插入时出现一个write concern错误,返回类似如下信息:
WriteResult({ "nInserted" : 1, "writeConcernError" : { "code" : 64, "errmsg" : "waiting for replication timed out at shard-a" } })
插入时出现于write concern无关的错误:
WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.foo.$_id_ dup key: { : 1.0 }" } })
3. Write Concern
用于设定写操作的响应等级
{ w: <value>, j: <boolean>, wtimeout: <number> }
w=0: 写操作不等待服务端响应确认,即便写入失败也不会响应。但能感知到网络错误。
w=1: 能够获取到单节点或集群中主节点的响应信息。该值为默认值。
w=majority: 能够获取到集群中包括主节点在内的多个节点(voting)的响应信息,而且本次写入操作会确保记录磁盘journal,即便断电数据也不会丢失
w>1: 能够获得包括主节点在内的多个节点的响应信息,但指定的数量需与集群数量一致,否则操作会一直等待,除非设置wtimeout
j=true: 等待操作写入journal log才会返回响应,可以容忍服务器宕机。需在mongod启动时加上journaling参数确保可以使用。
wtimeout: 写入操作的超时时长,单位为毫秒,超时则返回一个错误信息。
上一篇: 曹操真的是“摸金校尉”的祖师爷吗?
下一篇: Java用Cookie限制点赞次数
推荐阅读
-
sqlserver中向表中插入多行数据的insert语句
-
sqlserver中向表中插入多行数据的insert语句
-
在Oracle中向视图中插入数据的方法
-
C#向word文档插入新段落及隐藏段落的方法
-
mssql 一次向表中插入多条数据的方法分享 (转自:http://www.maomao365.com/?p=6058)
-
C#向word文档插入新段落及隐藏段落的方法
-
Python向Excel中插入图片的简单实现方法
-
【转载】C#中使用Insert方法往ArrayList集合指定索引位置插入新数据
-
insert和select结合实现"插入某字段在数据库中的最大值+1"的方法
-
石墨文档如何使用?石墨文档中插入图片的方法