Mongodb UPDATE使用$sort將數(shù)組重新排序的示例代碼
本文繼續(xù)探討對文檔數(shù)組類型字段進行更新??梢运伎计綍r是否遇到這樣的需求。數(shù)據(jù)插入數(shù)組字段后,需要對數(shù)組字段進行排序。比如找出昨天溫度最高的幾個城市,或者降水量最多的幾個城市?;蛘叱煽冏罡叩膸讉€同學(xué)。這里都需要使用到排序。Mongodb在$push操作中,提供了$sort數(shù)據(jù)修飾符,允許用戶向數(shù)組插入元素后,對數(shù)組進行排序。
定義
$sort方法在$push操作過程中,修改數(shù)組元素的排序。$sort方法,必須和$each共同使用。mongodb允許用戶傳遞一個空的數(shù)組給$each方法,保證用戶無須向數(shù)組中插入元素也可以將數(shù)組進行排序。$sort方法,按照下面的形式來使用。
{ $push: { <field>: { $each: [<value1>, <value2>, ...], $sort: <sort specification> } } }
對于sort specification, 當對非文檔數(shù)組進行排序,或?qū)φ麄€文檔作為整體進行排序時,正序可以指定1, 倒序可以指定為-1.當對文檔字段進行排序時,指定要排序的字段和排列順序。不需要添加數(shù)組字段的字段名稱。
行為
- 自mongodb5.0開始,UPDATE操作按照字段名稱的字典順序更新字段。當字段中包含數(shù)字時,按照數(shù)字順序依次更新字段。當然,對一個文檔的多個字段操作,是原子性的。
- $sort可以對數(shù)組中的文檔進行排序。這種排序可以發(fā)生在整個文檔或者文檔的部分字段當中。
- $sort方法必須和$each方法共同使用,否則報錯
應(yīng)用
對數(shù)組中的文檔進行排序
向students集合中插入數(shù)據(jù),其中quzzes是文檔數(shù)組類型字段。
db.students.insertOne( { _id:1, quzzes: [ {id:1, score:6}, {id:2, score:9} ] } )
構(gòu)建更新語句,要求向quzzes插入數(shù)組元素,并按照score正序進行排序。
db.students.updateOne( {_id:1}, { $push: { quzzes: { $each: [ {id:3, score:8}, {id:4, score:7}, {id:5, score:6} ], $sort: {score:1} } } } )
查看數(shù)據(jù)更新結(jié)果
db.students.find().pretty(); [ { "_id": 1, "quzzes": [ { "id": 1, "score": 6 }, { "id": 5, "score": 6 }, { "id": 4, "score": 7 }, { "id": 3, "score": 8 }, { "id": 2, "score": 9 } ] } ]
使用$sort排列非文檔數(shù)據(jù)類型。
向students集合插入數(shù)據(jù)。其中test字段是數(shù)值類型的數(shù)組。
db.students.insertOne({ _id:2, tests: [ 89,70,89, 50 ] })
更新插入的數(shù)據(jù), 要求插入新數(shù)據(jù)40, 60并對數(shù)組按照正序進行排序。
db.students.updateOne({ _id:2 },{ $push: { tests: { $each: [40, 60], $sort: 1 } } })
查看數(shù)據(jù)更新結(jié)果
db.students.find() { "_id": 2, "tests": [ 40, 50, 60, 70, 89, 89 ] }
僅使用$sort對數(shù)組進行排序
向students集合插入數(shù)據(jù),其中tests是數(shù)值類型的數(shù)組
db.students.insertOne({ _id:3, tests: [89, 70, 100, 20] })
修改新插入的文檔,要求將tests字段按照倒序排序。
db.students.updateOne({ _id:3 },{ $push: { tests: { $each: [], $sort: -1 } } })
查看更新后的結(jié)果
{
"_id": 3,
"tests": [
100,
89,
70,
20
]
}
以上就是Mongodb UPDATE使用$sort將數(shù)組重新排序的示例代碼的詳細內(nèi)容,更多關(guān)于Mongodb $sort數(shù)組重新排序的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mongodb exception: $concat only supports strings, not Number
這篇文章主要介紹了mongodb exception: $concat only supports strings, not NumberInt32解決辦法,需要的朋友可以參考下2014-06-06SpringBoot+MongoDB實現(xiàn)物流訂單系統(tǒng)的代碼
這篇文章主要介紹了SpringBoot+MongoDB實現(xiàn)物流訂單系統(tǒng)的代碼,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09Mongodb?刪除集合數(shù)據(jù)后釋放磁盤空間的操作步驟
Mongodb當集合數(shù)據(jù)占用比較多,對其進行清理后,集合存儲空間下降,但磁盤空間并沒釋放,對于具有活動更新的集合來說,有一些可重用的空間是正常的,過多的可重用空間通常是刪除大量數(shù)據(jù)的結(jié)果,這篇文章主要介紹了Mongodb?刪除集合數(shù)據(jù)后如何釋放磁盤空間,需要的朋友可以參考下2023-11-11Mongodb中MapReduce實現(xiàn)數(shù)據(jù)聚合方法詳解
Mongodb是針對大數(shù)據(jù)量環(huán)境下誕生的用于保存大數(shù)據(jù)量的非關(guān)系型數(shù)據(jù)庫,針對大量的數(shù)據(jù)。接下來通過本文給大家介紹Mongodb中MapReduce實現(xiàn)數(shù)據(jù)聚合方法詳解,感興趣的朋友一起學(xué)習(xí)吧2016-05-05關(guān)于MongoDB謹防索引seek的效率問題詳析
這篇文章主要給大家介紹了關(guān)于MongoDB謹防索引seek的效率問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11windows與mac安裝mongodb數(shù)據(jù)庫的方法步驟與注意事項
今天小編就為大家分享一篇關(guān)于windows與mac安裝mongodb數(shù)據(jù)庫的方法步驟與注意事項,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03