回答
不,它是不壞,實際上建在OjbectId
是索引中相當可觀的,所以如果你相信你有更好的東西,那麼你比歡迎更多的改變_id
場的默認值什麼。 http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/#auto-increment-counters-collection
多線程ISN」:
但是,這是一個很大的但,決定何時從默認移開制定ObjectId
,使用如下所示自動遞增_ids尤其是當有一些注意事項由於findAndModify
和原子鎖實際上可以處理這個問題,所以這個問題很嚴重,但是之後就會遇到第一個問題。 findAndModify
不是最快的功能也不是最輕的,並且在定期使用時會出現顯着的性能下降。
即使沒有findAndModify
,您也必須考慮自己這樣做的開銷。對於每個插入您需要做一個額外的查詢。圖像具有唯一的ID,您必須查詢每次插入的唯一性,最終您的插入速率將降至爬行狀態,並且您的鎖會積聚起來。
當然,ObjectId
真的很獨特,無需通過在插入之前觸摸數據庫來檢查或制定自己的唯一性,因此它沒有這種開銷。
這就是說,這不是世界上最糟糕的想法,如果你認爲它適合你的方案,然後去爲它,但請記住,如果你不需要自動遞增ID它可能是一個負擔,你。
你可以做到這一點,但是你有責任確保該整數是唯一的。
MongoDB不像大多數SQL數據庫那樣支持自動增量字段。當你有一個分佈式或多線程的應用程序有多個進程和/或線程來創建新的數據庫條目時,你必須確保他們使用相同的計數器。否則可能會發生兩個線程嘗試在數據庫中存儲具有相同_id的文檔。
發生這種情況時,其中一個會失敗。這意味着您必須等待數據庫返回成功或錯誤(通過調用GetLastError或將寫入關注點設置爲確認爲),這需要花費更長的時間,而不僅僅是以難以忘懷的方式發送數據。
- 1. 將MongoDB字段的類型更改爲控制檯的整數
- 2. 如何在MongoDB shell中將對象的_id字段的類型更改爲ObjectId?
- 3. MongoDB:將_id散列爲整數?
- 4. 在MongoDb中更改_id
- 5. mongodb類型更改爲數組
- 6. laravel mongodb如何在輸出中將_id更改爲id?
- 7. 使用_id的不同類型/格式好嗎?
- 8. 如何在MongoDb中爲_id保留數據類型?
- 9. 如何將雙精度類型更改爲unix中的整數類型?
- 10. _id與_id MongoDB中
- 11. 如何更改MongoDB中的類型?
- 12. 整數與int類型,哪個更好?
- 13. MongoDB $設置更改數據類型
- 14. 將遷移類型從日期更改爲整數
- 15. 如何將時間跨度變量更改爲整數類型?
- 16. 通過將「userid」類型更改爲整數
- 17. MongoDB:_id不能是數組
- 18. 將scrollTop中的整數更改爲div
- 19. 從文本更改列數據類型爲整數PostgreSQL中
- 20. 如何將MongoDB類型從Double或Integer更改爲String?
- 21. 將依賴項的列的數據類型從整數更改爲數字
- 22. MongoDB的骨料$組「_id」爲不同的
- 23. 將varchar字段的類型更改爲整數:「不能自動轉換爲鍵入整數」
- 24. 在列表中將列數據類型從布爾值更改爲整數
- 25. 將屬性類型從字符串更改爲neo4j中的整數
- 26. 在mongodb數據庫中更改集合中字段的類型
- 27. 更新MongoDB中的_id字段
- 28. Mongodb更新。 setOnInsert Mod _id不允許
- 29. PHP將$ a的類型從整數更改爲對象。爲什麼?
- 30. 將默認數值類型更改爲在matlab中浮點型
這真的取決於。有一個參數是否定的,因爲它是一個唯一的id(自動遞增),但是有一個是肯定的,因爲需要維護id以保持id是唯一的(不得不查詢其他計數器集合)。這就像在插入它們之前必須檢查所有_ids的唯一性,它最終會妨礙插入的速度併產生長時間鎖定。 – Sammaye
嗯,這個簡單的功能在DB中有很多動作? =( –
)當然很多,因爲當然MongoDB沒有服務器端自動遞增ID的意義,你可以在這裏找到它需要做的一個:http://docs.mongodb。org/manual/tutorial/create-an-auto-incrementing-field/infact這就是爲什麼MongoDB不支持這種類型的id服務器端的原因之一 – Sammaye