Mongodb(三):Mongodb的增删改查(1)

学Mongodb之前,最好先了解一下JSON这种数据格式,Mongodb中的BSON是JSON的一种扩展,和JSON差不多,如果懂JSON的话,学起来会容易很

多,当然JSON也是很容易上手的。

(1):插入(insert)可以有两种,单个的插入document和批量的插入document

      a. 插入一条document:  示例:db.persons.insert({"_id":"001", "name":"zhangsan", "age":23})

      

      说明:可以理解成就是以JSON格式进行增加,findOne()是查询第一条记录.

      b.批量插入:说白了,就是插入一个数组:,如下:

      

      说明:在老的版本中好像还不支持批量插入,但是新的版本已经支持了,在老的版本中,可以写一个for循环实现批量增加,既然新

      版本已经有了批量增加,就用这种方式吧。

(2) save操作:save操作和insert操作区别在于当遇到_id相同的情况下,save会对那条数据进行跟新操作,insert则会报错。如下:

      

(3) remove操作:删除数据。不带条件全部删除:db.persons.remove().下面写一个带条件删除的:db.persons.remove({"_id":"003"}),

    如下:

   

(4):update操作:update操作中的修改器会在下篇再说,这里说一下:强硬的文档替换式更新操作,说白了,就是将先前的记录删除掉,

    再添加一条新的(也可以说成是整体更新),如下:db.persons.update({"_id":"001"}, {"age":22})

    

    说明:a.update方法语法:update(查询条件, 更新结果); <其实并不止两个参数,后面会接触到>

      b.从上面的结果可以看出,虽然age这个字段得到了更新,但是name字段却没有了,这就是强硬的document替换式更新操作,

           就是用新的这一条替换原来那一条。后面所讲的修改器是一种局部的更新。

      c.注意:主键冲突的时候会报错并且停止更新操作 ,因为是强硬替换当替换的文档和已有文档ID冲突的时候 ,则系统会报错

 

(5): upsert操作:顾名思义,这是两个单词的缩写:update和insert,这个操作的目的是如果有这个数据,就进行更新操作,如果没有

     这个数据就进行插入操作。但是要注意,其实并没有upsert这个方法,upsert只是一种说法,它的实现还是靠update方法来做的。

     将update方法的第三个参数改成true即可做到upsert。 

     如下:db.persons.update({"_id":"003"},{"name":"wangwu"},true)  

    

    从结果可以看出,要更新的数据在原本的数据中不存在,所有就添加了一条数据,不过_id值是自动生成的,不能指定(这里有点纠

    结,为什么不用我的_id呢?)。

(6):批量更新操作, 在默认情况只会更新符合条件的第一条,即使有多条数据符合查询条件,也只会更新第一条数据,如下:

    

    那如何做到全部更新呢?将update方法的第四个参数改为true即可,

    如下:db.persons({"name":"wangwu"}, {"name":"zhaoliu"},false,true)

    

   注意:上图中刚开始的时候报了一个错:multi update only works with $ operators,就是说如果用了批量更新,就只能够

   进行局部更新,而不能进行整体更新。$set是一个修改器,是进行局部更新操作的。可以把它看成是一个特殊的键(时刻牢记JSON的

   格式就不会晕)。下篇就会讲修改器。

posted @ 2014-10-23 13:55  无西lc  阅读(1689)  评论(0编辑  收藏  举报