2012-03-30 30 views
1

我需要在Mongo中爲集合中的文檔創建類似於(1,2,3,4,...,n + 1)的人類可讀ID。有沒有辦法通過本地mongo工具創建它們,或者我必須在程序的邏輯中創建它們。 p.s我使用mongoengine作爲ORM。如何在MongoDb中創建人類可讀的ID

回答

3

http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-SequenceNumbers

傳統數據庫通常用於 主鍵遞增的序列號。在MongoDB中,首選的方法是使用對象ID 。這個概念是,在一個非常大的機器集羣中,它比創建一個對象ID更容易創建一個對象ID,而不是全局的,統一的 增加序列號。

但是,有時您可能需要一個序列號。您可以通過 創建「計數器」文檔並使用findAndModify Command來完成此操作。

代碼示例(從附加鏈接):

function counter(name) { 
    var ret = db.counters.findAndModify({query:{_id:name}, update:{$inc : {next:1}}, "new":true, upsert:true}); 
    // ret == { "_id" : "users", "next" : 1 } 
    return ret.next; 
} 

db.users.insert({_id:counter("users"), name:"Sarah C."}) // _id : 1 
db.users.insert({_id:counter("users"), name:"Bob D."}) // _id : 2 

檢查也answers to this question

+0

大,我'懶日誌,並不能成爲正式的書面文件)) – Denis 2012-03-30 07:20:02