日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MONGODB 数据的存储顺序发现不是按_ID 的顺序存储的原因

發(fā)布時(shí)間:2024/4/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MONGODB 数据的存储顺序发现不是按_ID 的顺序存储的原因 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在查詢一個(gè)表的數(shù)據(jù)時(shí)發(fā)現(xiàn)查詢返回的數(shù)據(jù)中_id 字段的值的排序是亂的。并沒有 按整數(shù)數(shù)據(jù)進(jìn)行排序,這里做一些說明: ? ? 在MONGODB 中,如果沒有加sort,返回的是數(shù)據(jù)原始存儲(chǔ)的順序,和下面的代碼一致: ? db.test.find().sort({$natural:1}) ? (原始存儲(chǔ)順序) ? 而指定排序順序如下: db.test.find().sort({_id:1}) ? 為什么會(huì)是亂的呢, ?

當(dāng)你把字段的值update時(shí),字段的長(zhǎng)度在逐步增加.因?yàn)镸ongoDB在記錄長(zhǎng)度變化后,發(fā)現(xiàn)當(dāng)前記錄所在空間后面沒有空余的空間可供其變長(zhǎng)。

那么這條記錄就會(huì)被刪除然后移動(dòng)到數(shù)據(jù)集的最后,所以導(dǎo)致$natural最后排序的結(jié)果和之前不一樣。

? ? ? 下面我做一個(gè)測(cè)試: ? #1:在一個(gè)表中插入100條記錄 ? >?for(var?i=0;i<100;i++)db.test.insert({_id:i,a:'1'}) SingleWriteResult({ "writeErrors"?:?[?], "writeConcernErrors"?:?[?], "nInserted"?:?1, "nUpserted"?:?0, "nUpdated"?:?0, "nModified"?:?0, "nRemoved"?:?0, "upserted"?:?[?] }) >?db.test.count() 100 >?db.test.find() {?"_id"?:?0,?"a"?:?"1"?} {?"_id"?:?1,?"a"?:?"1"?} {?"_id"?:?2,?"a"?:?"1"?} {?"_id"?:?3,?"a"?:?"1"?} {?"_id"?:?4,?"a"?:?"1"?} {?"_id"?:?5,?"a"?:?"1"?} {?"_id"?:?6,?"a"?:?"1"?} {?"_id"?:?7,?"a"?:?"1"?} {?"_id"?:?8,?"a"?:?"1"?} {?"_id"?:?9,?"a"?:?"1"?} {?"_id"?:?10,?"a"?:?"1"?} {?"_id"?:?11,?"a"?:?"1"?} {?"_id"?:?12,?"a"?:?"1"?} {?"_id"?:?13,?"a"?:?"1"?} {?"_id"?:?14,?"a"?:?"1"?} {?"_id"?:?15,?"a"?:?"1"?} {?"_id"?:?16,?"a"?:?"1"?} {?"_id"?:?17,?"a"?:?"1"?} {?"_id"?:?18,?"a"?:?"1"?} {?"_id"?:?19,?"a"?:?"1"?} Type?"it"?for?more ? 用兩種方法查詢看看數(shù)據(jù)的第一條記錄: ? >?db.test.find().sort({_id:1}).limit(1) {?"_id"?:?0,?"a"?:?"1"?} >?db.test.find().sort({$natural:1}).limit(1) {?"_id"?:?0,?"a"?:?"1"?} ? 下面進(jìn)行修改:把a(bǔ)字段的值加長(zhǎng): ? >?db.test.update({},{a:'12'}) SingleWriteResult({ "writeErrors"?:?[?], "writeConcernErrors"?:?[?], "nInserted"?:?0, "nUpserted"?:?0, "nUpdated"?:?1, "nModified"?:?1, "nRemoved"?:?0, "upserted"?:?[?] }) ? 還是一樣 ? >?db.test.find().sort({_id:1}).limit(1) {?"_id"?:?0,?"a"?:?"12"?} >?db.test.find().sort({$natural:1}).limit(1) {?"_id"?:?0,?"a"?:?"12"?} >?db.test.update({},{a:'123'}) SingleWriteResult({ "writeErrors"?:?[?], "writeConcernErrors"?:?[?], "nInserted"?:?0, "nUpserted"?:?0, "nUpdated"?:?1, "nModified"?:?1, "nRemoved"?:?0, "upserted"?:?[?] }) ? 再加長(zhǎng): ? >?db.test.find().sort({_id:1}).limit(1) {?"_id"?:?0,?"a"?:?"123"?} >?db.test.find().sort({$natural:1}).limit(1) {?"_id"?:?0,?"a"?:?"123"?} >?db.test.update({},{a:'1234567890'}) SingleWriteResult({ "writeErrors"?:?[?], "writeConcernErrors"?:?[?], "nInserted"?:?0, "nUpserted"?:?0, "nUpdated"?:?1, "nModified"?:?1, "nRemoved"?:?0, "upserted"?:?[?] }) ? 再加長(zhǎng) ? >?db.test.find().sort({_id:1}).limit(1) {?"_id"?:?0,?"a"?:?"1234567890"?} >?db.test.find().sort({$natural:1}).limit(1) {?"_id"?:?0,?"a"?:?"1234567890"?} >?db.test.find().sort({_id:1}).limit(10) {?"_id"?:?0,?"a"?:?"1234567890"?} {?"_id"?:?1,?"a"?:?"1"?} {?"_id"?:?2,?"a"?:?"1"?} {?"_id"?:?3,?"a"?:?"1"?} {?"_id"?:?4,?"a"?:?"1"?} {?"_id"?:?5,?"a"?:?"1"?} {?"_id"?:?6,?"a"?:?"1"?} {?"_id"?:?7,?"a"?:?"1"?} {?"_id"?:?8,?"a"?:?"1"?} {?"_id"?:?9,?"a"?:?"1"?} >?db.test.find().sort({$natural:1}).limit(10) {?"_id"?:?0,?"a"?:?"1234567890"?} {?"_id"?:?1,?"a"?:?"1"?} {?"_id"?:?2,?"a"?:?"1"?} {?"_id"?:?3,?"a"?:?"1"?} {?"_id"?:?4,?"a"?:?"1"?} {?"_id"?:?5,?"a"?:?"1"?} {?"_id"?:?6,?"a"?:?"1"?} {?"_id"?:?7,?"a"?:?"1"?} {?"_id"?:?8,?"a"?:?"1"?} {?"_id"?:?9,?"a"?:?"1"?} ? 經(jīng)過幾次的測(cè)試:我加長(zhǎng)到以下情況時(shí), >?db.test.update({},{a:'123456789012345678901234567890'}) SingleWriteResult({ "writeErrors"?:?[?], "writeConcernErrors"?:?[?], "nInserted"?:?0, "nUpserted"?:?0, "nUpdated"?:?1, "nModified"?:?1, "nRemoved"?:?0, "upserted"?:?[?] }) ? 下面看到結(jié)果了:可以看到原先的第一條記錄,_id:0 存儲(chǔ)順序已發(fā)生了變化,已不是第一條記錄了。 ? >?db.test.find().sort({_id:1}).limit(10) {?"_id"?:?0,?"a"?:?"123456789012345678901234567890"?} {?"_id"?:?1,?"a"?:?"1"?} {?"_id"?:?2,?"a"?:?"1"?} {?"_id"?:?3,?"a"?:?"1"?} {?"_id"?:?4,?"a"?:?"1"?} {?"_id"?:?5,?"a"?:?"1"?} {?"_id"?:?6,?"a"?:?"1"?} {?"_id"?:?7,?"a"?:?"1"?} {?"_id"?:?8,?"a"?:?"1"?} {?"_id"?:?9,?"a"?:?"1"?} ? >?db.test.find().sort({$natural:1}).limit(10) {?"_id"?:?1,?"a"?:?"1"?} {?"_id"?:?2,?"a"?:?"1"?} {?"_id"?:?3,?"a"?:?"1"?} {?"_id"?:?4,?"a"?:?"1"?} {?"_id"?:?5,?"a"?:?"1"?} {?"_id"?:?6,?"a"?:?"1"?} {?"_id"?:?7,?"a"?:?"1"?} {?"_id"?:?8,?"a"?:?"1"?} {?"_id"?:?9,?"a"?:?"1"?} {?"_id"?:?10,?"a"?:?"1"?} ? >?db.test.find().limit(10) {?"_id"?:?1,?"a"?:?"1"?} {?"_id"?:?2,?"a"?:?"1"?} {?"_id"?:?3,?"a"?:?"1"?} {?"_id"?:?4,?"a"?:?"1"?} {?"_id"?:?5,?"a"?:?"1"?} {?"_id"?:?6,?"a"?:?"1"?} {?"_id"?:?7,?"a"?:?"1"?} {?"_id"?:?8,?"a"?:?"1"?} {?"_id"?:?9,?"a"?:?"1"?} {?"_id"?:?10,?"a"?:?"1"?} >?db.test.find().sort({_id:1}).limit(10) {?"_id"?:?0,?"a"?:?"123456789012345678901234567890"?} {?"_id"?:?1,?"a"?:?"1"?} {?"_id"?:?2,?"a"?:?"1"?} {?"_id"?:?3,?"a"?:?"1"?} {?"_id"?:?4,?"a"?:?"1"?} {?"_id"?:?5,?"a"?:?"1"?} {?"_id"?:?6,?"a"?:?"1"?} {?"_id"?:?7,?"a"?:?"1"?} {?"_id"?:?8,?"a"?:?"1"?} {?"_id"?:?9,?"a"?:?"1"?} >? ?

總結(jié)

以上是生活随笔為你收集整理的MONGODB 数据的存储顺序发现不是按_ID 的顺序存储的原因的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。