Mongodb在UPDATE操作中使用$push向數(shù)組中插入數(shù)據(jù)的方法
學習mongodb,體會mongodb的每一個使用細節(jié),歡迎閱讀威贊的文章。這是威贊發(fā)布的第69篇mongodb技術文章,歡迎瀏覽本專欄威贊發(fā)布的其他文章。如果您認為我的文章對您有幫助或者解決您的問題,歡迎在文章下面點個贊,或者關注威贊。謝謝。
定義
在update操作中,使用$push操作符向數(shù)組中插入新的元素。按照下面的語法,使用$push操作符
{$push: {<field1>: <value1>, ...}}
當向嵌入式文檔或數(shù)組中的數(shù)組字段插入元素時,使用點操作符。
行為
- 自mongodb5.0開始,UPDATE操作按照字段名稱的字典順序更新字段。當字段中包含數(shù)字時,按照數(shù)字順序依次更新字段。當然,對一個文檔的多個字段操作,是原子性的。
- 使用$push向文檔不存在的字段插入元素時,update操作向文檔中插入該字段并將$push中的指定值賦給新增加的字段。
- 使用$push向非數(shù)組字段添加新的元素,數(shù)據(jù)更新操作會失敗。
- 向指定字段使用$push插入數(shù)組時,Mongodb的數(shù)據(jù)更新操作將即將插入的數(shù)組作為整體,插入到目標數(shù)組當中。如果用戶計劃使用$push插入指定數(shù)組的每一個元素,需要使用$each操作符。
- mongodb 5.0版本以后,向$push傳入空表達式({ })時,mongodb不再拋出錯誤。空表達式不會修改字段值 ,也不會在oplog中,添加新的操作記錄。
- Mongodb提供了幾個可以與$push搭配使用的數(shù)據(jù)操作符
操作符 | 描述 |
$each | 向指定數(shù)組一次性添加多個元素 |
$slice | 限制操作數(shù)組的容量,需要和$each操作符搭配使用 |
$sort | 對指定數(shù)組進行排序,需要和$each操作符搭配使用 |
$position | 指定新元素在數(shù)組中插入的位置,需要和$each操作符搭配使用。默認新的元素插入到數(shù)組的結尾 |
當執(zhí)行$push操作時,當用戶指定對數(shù)組排序或限制數(shù)組長度時,update按照下面的順序執(zhí)行$push操作。
應用
創(chuàng)建students集合并插入數(shù)據(jù)
db.students.insertOne({_id:1,scores: [44,78,38,80]})
向數(shù)組中插入元素
db.students.updateOne({_id:1},{$push: {scores: 89}})
將指定數(shù)值插入多個文檔的數(shù)組字段中
向students集合插入新文檔
db.students.insertMany([ {_id:2,scores: [45,78,38,80,89]}, {_id:3,scores: [46,78,38,80,89]}, {_id:4,scores: [47,78,38,80,89]}, ])
構建UPDATE語句,向students所有文檔的scores字段插入新值95
db.students.updateMany({},{$push: {scores: 95}})
向數(shù)組中插入多個數(shù)值
在$push中使用$each操作符,將多個值插入數(shù)組中。
db.students.updateOne({_id:1},{$push: {scores: {$each: [90, 92, 85]}}})
在$push操作符中使用多個數(shù)組更新操作符
向students集合中插入文檔
db.students.insertMany([ {_id:5, quizzes: [ {wk:1, score: 10}, {wk:2, score: 8}, {wk:3, score: 5}, {wk:4, score: 6} ]} ])
構建數(shù)據(jù)更新語句,完成下面幾個操作
- 使用$each操作符,向quizzes字段插入多個元素
- 按照score倒序將quizzes中的元素進行排列
- 使用$slice限制quizzes數(shù)組的容量,保留排序后前面3個元素
db.students.updateOne( {_id:5}, { $push: { quizzes: { $each: [ {wk:5, score: 8}, {wk:6, score: 7}, {wk:7, score: 6} ], $sort: {score: -1}, $slice: 3 } } } )
到此這篇關于Mongodb在UPDATE操作中使用$push向數(shù)組中插入數(shù)據(jù)的方法的文章就介紹到這了,更多相關Mongodb使用$push向數(shù)組中插入數(shù)據(jù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何去掉保存mongodb數(shù)據(jù)時出現(xiàn)的_class字段
這篇文章主要給大家介紹了如何去掉保存mongodb數(shù)據(jù)時出現(xiàn)的_class字段,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-02-02使用Node操作MongoDB數(shù)據(jù)庫的方法
這篇文章主要介紹了使用Node操作MongoDB數(shù)據(jù)庫的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-01-01詳解Mongodb?多文檔聚合操作處理方法(Map-reduce?函數(shù))
這篇文章主要介紹了Mongodb多文檔聚合操作處理方法(Map-reduce函數(shù)),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07基于MongoDB數(shù)據(jù)庫的數(shù)據(jù)類型和$type操作符詳解
下面小編就為大家?guī)硪黄贛ongoDB數(shù)據(jù)庫的數(shù)據(jù)類型和$type操作符詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07