注意:1、MongoDB第一次插入数据时,不需要事先创建集合collection,插入时自动创建;2、每次插入时,不需要显示的指定_id,MongoDB默认创建该字段作为主键(当然,也可以自己指定),_id为ObjectId类型的值,由12个字节组成,分别是时间戳,精确到秒(4字节),机器唯一标识(3字节),进程ID(2字节),随机数(3)字节,如 58983d0fc55e261327343eab解释为58983d0f,为1970年到如今的时间差(秒),c55e26,为机器唯一标示符,1327为进程ID(十六进制),343eab,为随机数;3、MongoDB中每一个collection中必须有一个_id字段,且必须值唯一。

MongoDB的修改语句语法如下所示:

update表示需要修改的地方,如果只包含字段,而没有操作符,则会发生取代性修改,该字段一般尽量携带操作符,防止导致因修改一个字段而删除其他字段upsert可选,默认false,true时表示如果没有匹配到记录,则插入multi可选,默认false,默认只更新匹配到的第一个文档,true时表示更新所有匹配到的记录

更改多个文档,或找不到则插入(不可同时):

  1. > db.user.update({id:12},{$set:{name:"lisisi",age:18}},{upsert:true})
  2. > db.user.find()
  3. { "_id" : ObjectId("589c11513b5012ba1ce5500e"), "age" : 18, "id" : 12, "name" : "lisisi" }

MongoDB中的删除语句与RDB中的delete类似,只是名字叫remove,其语法如下:

query为可选参数,类似wherejustOne是一个Boolean值,表示只删除匹配到的第一个文档(即记录)注意:如果不指定任何参数,则将删除所有记录,但是索引数据不会被删除,如果需要删除记录以及索引,则需要单独去drop掉索引

  1. > db.user.find()
  2. > db.user.remove({},false)
  3. > db.user.find()

可以看到删除后的结果,为空,去看下索引:

索引则还存在。

MongoDB的读写锁,基本与RDB类似,没有什么特殊的地方,需要注意的是,目前来讲,MongoDB的锁机制还是与RDB(关系型数据库)存在一定的差距的。