mysql - mongo如何對(duì)一個(gè)collection進(jìn)行順序上的調(diào)整呢?
問(wèn)題描述
如題目所說(shuō),我這里在mongo中有一個(gè)collection,需要往里面插入一些數(shù)據(jù),但是我想把插入的這幾個(gè)數(shù)據(jù)在這個(gè)collection的前幾位顯示,大家有什么好的辦法沒?在此先謝過(guò)了
問(wèn)題解答
回答1:一個(gè) collection 里的自然順序是由 mongodb 自己管理的,你控制不了。如果你需要按某種順序使用數(shù)據(jù),那就直截了當(dāng)?shù)馗嬖V mongodb 按什么排序。
回答2:使用mongodb的排序功能吧, 你可以在你插入的數(shù)據(jù)上取一個(gè)可以用于排序的字段升序或是降序排列,1是升,-1是降
db.coll.find({}).sort({’字段’: 1})回答3:
很遺憾你要做的事情沒有辦法實(shí)現(xiàn)。從JSON規(guī)范可以看出
An object is an unordered set of name/value pairs.
集合是無(wú)序的,所以沒有辦法控制顯示的時(shí)候元素出現(xiàn)的位置。不過(guò)換個(gè)角度想想,這樣的功能其實(shí)對(duì)你來(lái)說(shuō)沒有多大意義。
如果是在應(yīng)用中,你展現(xiàn)給用戶的順序是你自己定義的順序,跟本身的元素出現(xiàn)順序無(wú)關(guān);
如果在數(shù)據(jù)庫(kù)中,實(shí)際上只有數(shù)據(jù)庫(kù)管理員能看到,這個(gè)順序也只對(duì)某個(gè)管理員有意義;
在我看來(lái)這不是一個(gè)很難的功能,之所以沒有實(shí)現(xiàn),因?yàn)闆]有什么實(shí)用價(jià)值,而只會(huì)拖慢數(shù)據(jù)庫(kù)的速度,這就有違數(shù)據(jù)庫(kù)本身的價(jià)值觀了:數(shù)據(jù)庫(kù)的主要目的是高效地為你提供數(shù)據(jù),不是以不同的形式展現(xiàn)數(shù)據(jù),展現(xiàn)數(shù)據(jù)應(yīng)該是應(yīng)用要關(guān)心的事情。如果你實(shí)在想看某幾個(gè)值,應(yīng)該通過(guò)projection來(lái)控制輸出的元素而不是依賴原來(lái)的順序。
相關(guān)文章:
1. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)2. html按鍵開關(guān)如何提交我想需要的值到數(shù)據(jù)庫(kù)3. mysql取模分表與分表4. gvim - 誰(shuí)有vim里CSS的Indent文件, 能縮進(jìn)@media里面的5. HTML 5輸入框只能輸入漢字、字母、數(shù)字、標(biāo)點(diǎn)符號(hào)?正則如何寫?6. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問(wèn)題 麻煩幫我看一下7. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯(cuò)誤8. PHP類屬性聲明?9. objective-c - ios 怎么實(shí)現(xiàn)微信聯(lián)系列表 最好是swift10. javascript - 請(qǐng)教如何獲取百度貼吧新增的兩個(gè)加密參數(shù)
