MongoDB文檔更新(二)

在上一篇文章中介紹了使用update()就行文檔的更新,都是更新一個單一的文檔。
以下將介紹:1.update()的其它的兩個屬性("upsert"和"mutli")
            2.save()shell函數。
1.update更新文檔:
    db.collection.update( <query>, <update>, <options> ).
    <query>:是查詢條件,相當於SQL查詢中的where條件;
    <update>:是新的數據;
    <options>:可選項包括兩個key:"upsert"和"mutli",其中upsert和mutli的設置都是0.

    下面主要說明upsert和mutli兩個選項:
     upsert:如果設置爲1,表示如果update操作的文檔在數據庫中不存在那麼就插入一個新的文檔;
     mutli:如果設置爲1,表示是否update符合<query>條件的所有的文檔記錄,默認設置爲0,表示只更新符合<query>條件的第一條文檔。
     實例操作:
     在c4集合中插入一下數據:
     > db.c4.find({"count":32});
       { "_id" : 1, "article" : "lalala", "count" : 32 }
       { "_id" : 2, "article" : "hahahaha", "count" : 32 }
       { "_id" : 3, "article" : "gagagaga", "count" : 32 }
    更新一個{"count":34}的文檔,按照<options>的默認情況下,是不能更新{"count":34}的文檔的,因爲此文檔不存在。
    1)、將upsert的值設置爲1(或者true):
        > db.c4.update({"count":34},{"article":"bright"},{"upsert":true});
         然後查找條件爲
 {"article":"bright"} 的文檔:
        > db.c4.find({"article":"bright"})
         { "_id" : ObjectId("4fc5392dbb418a455d039599"), "article" : "bright" }
       注意:這裏多出的數據只有<update>中鍵值對。
    2)、設置mutli的值爲1(或者true):它的含義是是否更新符合<query>條件的所有的數據。
         如更新{"count":32}的所有的文檔:將其中的article都更新爲"great!"
         db.c4.update({"count":32},{"$set":{"article":"great!"}},0,1);最後一個參數是mutli的值
         >db.c4.find({"count":32});
        { "_id" : 1, "article" : "great!", "count" : 32 }
        { "_id" : 2, "article" : "great!", "count" : 32 }
        { "_id" : 3, "article" : "great!", "count" : 32 }

2.save shell函數的使用:save表示保存文檔,不過比較特殊的是它不是簡單的save操作。
        如果save的文檔在集合中已經存在,那麼將更新集合,如果不存在才做保存操作。
        如此實例:往c4集合中save一個文檔爲{"_id":1,"article":"lalalala","count":32},基於1中的2)做操作。
        
> db.c4.find({"count":32});
         { "_id" : 1, "article" : "great!", "count" : 32 }
         { "_id" : 2, "article" : "great!", "count" : 32 }
         { "_id" : 3, "article" : "great!", "count" : 32 }
       > db.c4.save({"_id":1,"article":"lalalala","count":32});
       > db.c4.find({"count":32});
       { "_id" : 1, "article" : "lalalala", "count" : 32 }
       { "_id" : 2, "article" : "great!", "count" : 32 }
       { "_id" : 3, "article" : "great!", "count" : 32 }
       結果是按照{"_id":1}的條件將一條文檔更新了。
       假如單純的save一個{"_id":4}主鍵不一樣的文檔則會保存該文檔,這就比較容易了。
       如:
       > db.c4.find({"count":32});
         { "_id" : 1, "article" : "lalalala", "count" : 32 }
         { "_id" : 2, "article" : "great!", "count" : 32 }
         { "_id" : 3, "article" : "great!", "count" : 32 }
       > db.c4.save({"_id":4,"article":"a men","count":32});
       > db.c4.find({"count":32});
         { "_id" : 1, "article" : "lalalala", "count" : 32 }
         { "_id" : 2, "article" : "great!", "count" : 32 }
         { "_id" : 3, "article" : "great!", "count" : 32 }
         { "_id" : 4, "article" : "a men", "count" : 32 }
        多了一條文檔。
    關於mongodb的文檔更新差不多就介紹這些了比較粗略僅供學習參考吧,當然還有一些其它的一些更新方法。

  

 


     


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章