MongoDB 教程
MongoDB 使用 update() 和 save() 方法來(lái)更新集合中的文檔。接下來(lái)讓我們?cè)敿?xì)來(lái)看下兩個(gè)函數(shù)的應(yīng)用及其區(qū)別。
update() 方法用于更新已存在的文檔。語(yǔ)法格式如下:
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )
參數(shù)說(shuō)明:
我們?cè)诩?col 中插入如下數(shù)據(jù):
>db.col.insert({ title: 'MongoDB 教程', description: 'MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)', by: '小白教程', url: '', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
接著我們通過(guò) update() 方法來(lái)更新標(biāo)題(title):
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 輸出信息 > db.col.find().pretty() { "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)", "by" : "小白教程", "url" : "", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } >
可以看到標(biāo)題(title)由原來(lái)的 "MongoDB 教程" 更新為了 "MongoDB"。
以上語(yǔ)句只會(huì)修改第一條發(fā)現(xiàn)的文檔,如果你要修改多條相同的文檔,則需要設(shè)置 multi 參數(shù)為 true。
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
save() 方法通過(guò)傳入的文檔來(lái)替換已有文檔,_id 主鍵存在就更新,不存在就插入。語(yǔ)法格式如下:
db.collection.save( <document>, { writeConcern: <document> } )
參數(shù)說(shuō)明:
以下實(shí)例中我們替換了 _id 為 56064f89ade2f21f36b03136 的文檔數(shù)據(jù):
>db.col.save({ ????"_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)", "by" : "Runoob", "url" : "", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 })
替換成功后,我們可以通過(guò) find() 命令來(lái)查看替換后的數(shù)據(jù)
>db.col.find().pretty() { "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)", "by" : "Runoob", "url" : "", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 } >
只更新第一條記錄:
全部更新:
只添加第一條:
全部添加進(jìn)去:
全部更新:
只更新第一條記錄: