学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的格式就不会晕)。下篇就会讲
修改器。