国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MongoDB查詢時排序字段為int類型和string類型的區(qū)別

13651657101 / 2577人閱讀

摘要:但查詢出來的寫過卻并不是預(yù)想的為的文檔排在前面,結(jié)果正好相反。由于平常用比較多所以在查詢時自然想到但是并不能按照數(shù)字來排序字符串字段值,上面的集合中如果通過排序字符串值來得到想要的結(jié)果需要在個位數(shù)字前面補(bǔ)這樣才能返回想要的排序結(jié)果。

最近在開發(fā)中遇到一個mongo查詢排序的問題,項目中一些高頻訪問的熱數(shù)據(jù)是放在mongoDB里的,mongo支持很多像SQL一樣的操作比如sort就對應(yīng)于SQL的order by.

比方我們有一個集合來存放一些書籍信息,集合中有下面這些文檔

{
    "_id" : "28041",
    "title" : "Mysql入門",
    "subtitle" : "",
    "author" : "John Joe",
    "cate_id" : "223",
    "list_order" : "10",
}
......

{
    "_id" : "28847",
    "title" : "Node即學(xué)即用",
    "subtitle" : "",
    "author" : "Mike Wilson",
    "cate_id" : "223",
    "list_order" : "6",
}

上面集合中的list_order字段是用來控制書籍信息在列表中的現(xiàn)實順序的,比方要查詢cate_id 223下的所有書籍,并且把查詢結(jié)果按list_order降序排列。

db.book.find({"cate_id" : "223"}).sort({"list_order" : -1});
但查詢出來的寫過卻并不是預(yù)想的list_order為10的文檔排在前面,結(jié)果正好相反。原因就是上面的集合中l(wèi)ist_order的字段值都是字符串。

由于平常用Mysql比較多所以在查詢時自然想到ORDER BY list_order DESC, 但是MongoDB并不能按照數(shù)字來排序字符串字段值,上面的集合中如果通過排序字符串值來得到想要的結(jié)果需要在個位數(shù)字前面補(bǔ)“0” 01,02,03,04,05,06,07,08,09,10,11 這樣才能返回想要的排序結(jié)果。

另外也可以將list_order的值存儲為整數(shù)類型

{
    "_id" : "28847",
    "title" : "Node即學(xué)即用",
    "subtitle" : "",
    "author" : "Mike Wilson",
    "cate_id" : "223",
    "list_order" : NumberLong(6),
}

同樣能得到倒序排列結(jié)果。

推薦采用第二種存儲整型數(shù)值的方法,另外需要注意一些數(shù)據(jù)是從Mysql查出然后放到Mongo里去的,Mysql中存儲的int字段值查詢到程序里會變成數(shù)字字符串即 6 ==> "6" 所以才有了上面list_order值為"6"的情況, 所以如果需要保存為整型的數(shù)據(jù),在save前都要用(int)來進(jìn)行類型轉(zhuǎn)換。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/18771.html

相關(guān)文章

  • (翻譯) MongoDB(5) BSON類型

    摘要:類型數(shù)字別名注意已過時布爾日期正則表達(dá)式位整數(shù)時間戳位整數(shù)要確定字段的類型,請查看在中檢驗類型。是位整數(shù),代表自紀(jì)元年月日以來的毫秒數(shù)。 BSON是一個用來存儲文檔的二進(jìn)制序列化格式,并且可以在MongoDB中遠(yuǎn)程調(diào)用。該BSON規(guī)范位于bsonspce.org。 BSON在文檔中支持下列數(shù)據(jù)類型作為值。每個數(shù)據(jù)類型都有相對應(yīng)的數(shù)字和字符串別名用 $type 操作執(zhí)行BSON類型來查詢...

    KnewOne 評論0 收藏0
  • 開發(fā)者需要了解MongoDB知識點

    摘要:刪除符合值為的第一條數(shù)據(jù)刪除符合值為的所有數(shù)據(jù)值得一提的是,刪除操作并不會改變的索引設(shè)置,即便刪除了這個下的所有文檔。因此這類批量執(zhí)行指令是非原子性的。官方推薦使用前者。在設(shè)計數(shù)據(jù)模型時,要考慮根據(jù)不同情況選擇適合的文檔結(jié)構(gòu)進(jìn)行設(shè)計。 1. 基礎(chǔ)概念 1.1 database 數(shù)據(jù)庫,一個數(shù)據(jù)倉庫可以包含多個集合 1.2 collection 集合,類似于關(guān)系數(shù)據(jù)庫中的表。一個集合可以...

    MartinDai 評論0 收藏0
  • 開發(fā)者需要了解MongoDB知識點

    摘要:刪除符合值為的第一條數(shù)據(jù)刪除符合值為的所有數(shù)據(jù)值得一提的是,刪除操作并不會改變的索引設(shè)置,即便刪除了這個下的所有文檔。因此這類批量執(zhí)行指令是非原子性的。官方推薦使用前者。在設(shè)計數(shù)據(jù)模型時,要考慮根據(jù)不同情況選擇適合的文檔結(jié)構(gòu)進(jìn)行設(shè)計。 1. 基礎(chǔ)概念 1.1 database 數(shù)據(jù)庫,一個數(shù)據(jù)倉庫可以包含多個集合 1.2 collection 集合,類似于關(guān)系數(shù)據(jù)庫中的表。一個集合可以...

    chenatu 評論0 收藏0
  • Mongoose簡要API

    摘要:是在環(huán)境下對進(jìn)行便捷操作的對象模型工具因此,要使用,則必須安裝環(huán)境以及數(shù)據(jù)庫。使操作更簡單便捷。找到記錄,并且將遞增,返回后的為之前的。這個屬性很有用,對數(shù)字直接進(jìn)行增減。,要返回的字段與的第二個參數(shù)一致。 Mongoose是在node.js環(huán)境下對mongodb進(jìn)行便捷操作的對象模型工具 因此,要使用mongoose,則必須安裝node.js環(huán)境以及mongodb數(shù)據(jù)庫。mongoo...

    王巖威 評論0 收藏0
  • mongodb學(xué)習(xí)筆記

    摘要:用于存儲布爾值真假。將一個值與二進(jìn)制的元素的最低值和最高值相對比。可選,拋出異常的級別。在建立唯一索引時是否刪除重復(fù)記錄指定創(chuàng)建唯一索引。索引權(quán)重值,數(shù)值在到之間,表示該索引相對于其他索引字段的得分權(quán)重。 Robo 3T -< 可視化工具 http://blog.csdn.net/i_vic/ar... [Unit] Description=mongodb After=networ...

    lemanli 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<