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