如何在MongoDb中创建人类可读的id

时间:2012-03-30 07:05:55

标签: python mongodb

我需要在Mongo中创建人类可读的id,如(1,2,3,4,...,n + 1),用于集合中的文档。有没有办法用本机mongo工具创建它们,或者我必须用程序的逻辑创建它们。 p.s我使用mongoengine作为ORM。

1 个答案:

答案 0 :(得分: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