Как создать читабельный идентификатор в MongoDb - PullRequest
1 голос
/ 30 марта 2012

Мне нужно создать понятный для человека идентификатор в Mongo, например (1,2,3,4, ..., n + 1) для документов в коллекции. Есть ли способ создать их с помощью встроенных инструментов Монго, или я должен создать их в логике программы. p.s я использую mongoengine в качестве ORM.

1 Ответ

4 голосов
/ 30 марта 2012

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

Традиционные базы данных часто используют увеличивающиеся порядковые номера для первичных ключей.В MongoDB предпочтительным подходом является использование идентификаторов объектов.Концепция заключается в том, что в очень большом кластере машин проще создать идентификатор объекта, чем иметь глобальные, равномерно увеличивающиеся порядковые номера.

Однако иногда вам может потребоваться порядковый номер.Вы можете сделать это, создав «встречные» документы и используя команду findAndModify .

Пример кода (из прикрепленной ссылки):

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

Проверьте также ответы на этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...