標籤:style blog http for sp 資料 2014 on log
學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的格式就不會暈)。下篇就會講
修改器。
Mongodb(三):Mongodb的增刪改查(1)