1. 更新檔案
MongoDB的uptade()和save()方法用于將集合中的檔案更新,update()方法更新現有檔案中的值,而save()方法是傳遞檔案資料替換現有檔案,從3.2版本開始,MongoDB提供以下更新集合檔案的方法:
db.collection.updateOne()向指定集合更新單個檔案
db.collection.updateMany()向指定集合更新多個檔案
1.1 update()方法
update()方法更新現有檔案中的值,
語法:
> db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
實體:
mycol集合具有以下資料:
> db.mycol.find({}, {'_id':1, 'title':1}) { "_id" : 100, "title" : "MongoDB Overview" } { "_id" : 101, "title" : "MongoDB Guide" } { "_id" : 102, "title" : "NoSQL Database" } { "_id" : 104, "title" : "Python Quick Guide" } >
將標題為“MongoDB Overview”的檔案設定為“New Update MongoDB Overview”,
> db.mycol.find({'title':'MongoDB Overview'},{'_id':1, 'title':1}) { "_id" : 100, "title" : "MongoDB Overview" } > # 更新操作 > db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New Update MongoDB Overview'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > # 查詢更新后的結果 - > db.mycol.find({'_id':100},{'_id':1, 'title':1}) { "_id" : 100, "title" : "New Update MongoDB Overview" } >
默認情況下,MongoDB只會更新一個檔案,要更新多個檔案,需要將引數’multi‘設定為true,
>db.mycol.update({'title':'MongoDB Overview'}, {$set:{'title':'New Update MongoDB Overview'}},{multi:true})
1.2 Save()方法
save方法使用傳遞的檔案資料替換現有檔案,
語法:
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
實體:
將_id為100的檔案使用新的檔案替換,
db.mycol.save( { "_id" : 100, "title":"Update By Save()Method.", "by":"yiibai.com" } ) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) db.mycol.find({'_id':100}, {'_id':1, 'title':1}) { "_id" : 100, "title" : "Update By Save()Method." }
2. 洗掉檔案
MongoDB提供了三個洗掉檔案的方法:remove()、deleteOne()、deleteMany(),
2.1 remove()方法
remove()是最早的洗掉方法,現在使用的人也不少,
在執行remove()函式前先執行find()命令來判斷執行的條件是否正確,這是一個比較好的習慣,
remove()方法接受兩個引數,的一個是洗掉條件,第二個是標志:justOne,
criteria:(可選)符合洗掉條件的集合將被洗掉,
justOne:(可選)如果設定為true或1,則只洗掉一個檔案,
語法:
>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
mycol集合具有以下資料:
> db.mycol.find({}, {'_id':1, 'title':1}) { "_id" : 101, "title" : "MongoDB Guide" } { "_id" : 102, "title" : "NoSQL Database" } { "_id" : 104, "title" : "Python Quick Guide" } { "_id" : 100, "title" : "Update By Save()Method." } >
洗掉_id為“100”的檔案,
> db.mycol.find({}, {'_id':1, 'title':1}) { "_id" : 101, "title" : "MongoDB Guide" } { "_id" : 102, "title" : "NoSQL Database" } { "_id" : 104, "title" : "Python Quick Guide" } { "_id" : 100, "title" : "Update By Save()Method." } > > db.mycol.remove({'_id':100}) WriteResult({ "nRemoved" : 1 }) > db.mycol.find({}, {'_id':1, 'title':1}) { "_id" : 101, "title" : "MongoDB Guide" } { "_id" : 102, "title" : "NoSQL Database" } { "_id" : 104, "title" : "Python Quick Guide" } >
如果有多條記錄,并且只想洗掉第一條記錄,則在remove()方法中設定justOne引數,
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
如果要洗掉所有檔案記錄,可以在remove()方法中設定justOne引數,
如果不指定洗掉條件,MongoDB 將洗掉集合中的所有檔案, 這相當于SQL的truncate命令,
>db.mycol.remove() >db.mycol.find() >
2.2 daleteOne()方法和deleteMany()方法
db.mycol.deleteMany({}) # 洗掉所有 document
db.mycol.deleteMany({ _id : "1" }) # 洗掉所有 匹配到document
db.mycol.deleteOne( { _id: "3" } ) # 只洗掉第一個匹配的 document
remove()方法可以說是deleteOne()、deleteMany()的集合,remove()方法是有那個boolean值的justOne引數來分別是否只洗掉一個檔案,也就是區分deleteOne()、deleteMany(),
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/26219.html
標籤:NoSQL
