2012-03-30 11 views
1

Mongoでは、コレクション中の文書に対して(1,2,3,4、...、n + 1)のような人間が読めるIDを作成する必要があります。ネイティブのmongoツールでそれらを作成する方法はありますか、それともプログラムのロジックで作成する必要がありますか? p.s私はORMとしてmongoengineを使用します。MongoDbで人間が読めるIDを作成するには

答えて

3

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

従来のデータベースは、多くの場合、 主キーのために増加するシーケンス番号を使用します。 MongoDBでは、オブジェクト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

グレート、I'am怠惰なログとできない公式のドキュメンテーションに)) – Denis