※重要※——介紹一下我的環境:MongoDB的“win32-x86_64-2008plus-ssl-3.0.5”,MongoVUE版本是1.6.9,VS2010,dll是1.10版本。
MongoDB中文件的上傳
試驗①:使用VUE上傳,{本地文件名相同,但文件內容不同},在VUE中直接點擊“Add Files”上傳文件,此時VUE會檢查你的文件名是否重復,若重復就會給出提示“是改名?or還是跳過?”;這里咱們點擊‘重命名’完成文件的上傳,在VUE中可以看到如圖所示:{前三個是我用VUE上傳的}

前兩個文件雖然內容不同[MD5值不同],但是仍然不允許同名;而第2個和第3個文件雖然名字不同,但是是同一個圖片[MD5值一樣];
這里我的理解是:在VUE管理MongoDB時,上傳文件時【文件名不允許相同,對內容不做要求】
試驗②:用程序上傳,此時什么也不提示,文件直接上傳成功;以下是比較:
第3,4,5個文件的名字全部相同,但是第3,4個文件的MD5值是相同的,再比較第4,5個文件,雖然名字一樣,但是MD5值不同【同名但不同內容】。
這里我的理解是,程序在上傳時不會去判斷文件是否同名,只是通過dll庫完成文件上傳,剩余的由MongoDB來判斷【不同文件MD5不同】
總結:這里我想表達的是怎樣在MongoDB中保證文件的唯一性,目的是你從外部來查找文件時通過什么來唯一確定一個文件名。通過以上比較不難發現:文件名和MD5值都不能保證MongoDB中文件唯一,那應該采用什么來保證呢?答案是文件的ObjectID,就是BOSN中的【鍵值對“_id”和其值】,這個在VUE中鼠標停留在某一條數據上就會有顯示,每一個文件的第1個鍵“_id”的值是不同的。我就不再貼圖了,大伙可以自己上傳幾個文件看一下。
當然這里還有一個地方需要注意,雖然文件的ObjectID在這個MongoDB中是唯一的,但是MongoDB的ObjectID的生成辦法采用的是[時間戳,機器,PID,計數器]而不是GUID,因此這里的ObjectID可不是全球唯一的(或者說全宇宙唯一的**),不能用它來作為Oracle等庫的主鍵。
【第一次寫,可能表達的不清楚,希望各位見諒。有什么錯誤歡迎指出和探討】
