1. 程式人生 > >MongoDB文件儲存

MongoDB文件儲存

mongodb文件儲存特點

將文件插入到MongoDB的時候,文件是按照插入的順序,依次在磁碟上相鄰儲存
因此,一個文件變大了,原來的位置要是放不下這個文件了,
就需要把這個文件移動到集合的另外一個位置,通常是最後,能放下這個文件的地方。

示例: 修改第一個文件使它變大它會移動到最後
     db.userdatas.find()
{ "_id" : ObjectId("597f357a09c84cf58880e410"), "name" : "u5", "age" : 78 }
{ "_id" : ObjectId("597f357a09c84cf58880e412"), "name"
: "u3", "age" : 32 } { "_id" : ObjectId("597f357a09c84cf58880e411"), "name" : "u4", "age" : 30, "score" : [ 7, 4, 2, 0 ] } { "_id" : ObjectId("597fcc0f411f2b2fd30d0b3f"), "age" : 20, "score" : [ 7, 4, 2, 0, 10, 9, 8, 7 ], "name" : "lihao" } { "_id" : ObjectId("597f357a09c84cf58880e413"), "name" : "u2", "age" : 33
, "wendang" : { "yw" : 80, "xw" : 90 } } { "_id" : ObjectId("5983f5c88eec53fbcd56a7ca"), "date" : ISODate("2017-08-04T04:19:20.693Z") } { "_id" : ObjectId("597f357a09c84cf58880e40e"), "name" : "u1", "age" : 26, "address" : "中國碭山" } { "_id" : ObjectId("597f357a09c84cf58880e40f"), "name" : "u1", "age" : 37, "score"
: [ 10, 203, 12, 43, 56, 22 ] } db.userdatas.update({"name":"u5"},{"$set":{"address":"china beijing chaoyang"}}) db.userdatas.find() { "_id" : ObjectId("597f357a09c84cf58880e412"), "name" : "u3", "age" : 32 } { "_id" : ObjectId("597f357a09c84cf58880e411"), "name" : "u4", "age" : 30, "score" : [ 7, 4, 2, 0 ] } { "_id" : ObjectId("597fcc0f411f2b2fd30d0b3f"), "age" : 20, "score" : [ 7, 4, 2, 0, 10, 9, 8, 7 ], "name" : "lihao" } { "_id" : ObjectId("597f357a09c84cf58880e413"), "name" : "u2", "age" : 33, "wendang" : { "yw" : 80, "xw" : 90 } } { "_id" : ObjectId("5983f5c88eec53fbcd56a7ca"), "date" : ISODate("2017-08-04T04:19:20.693Z") } { "_id" : ObjectId("597f357a09c84cf58880e40e"), "name" : "u1", "age" : 26, "address" : "中國碭山" } { "_id" : ObjectId("597f357a09c84cf58880e40f"), "name" : "u1", "age" : 37, "score" : [ 10, 203, 12, 43, 56, 22 ] } { "_id" : ObjectId("597f357a09c84cf58880e410"), "name" : "u5", "age" : 78, "address" : "china beijing chaoyang" }

文件name=”u5” 會移動文件的最後
這裡寫圖片描述

MongoDB進行文件移動是非常慢的

移動文件的時候,MongoDB需要將文件原先佔用的空間釋放掉,然後將文件寫入新的空間,
相對費時,尤其是文件比較大,又頻繁需要移動的話,會嚴重影響效能。
  • 在插入的時候可以插入一個不用的欄位來佔位置。