我会尽可能地解释我的问题。我正在开发一个应用程序的服务器,帮助警察标记公民'属性。
每个新项目都有自己的ID。它由军官的区域Id(两个didgit),5个自增量数字和当前年份组成。例如:20-00001-18。
分配区域ID和当前年份很容易,但我不知道创建5位数字的正确方法。这个数字取决于地区,每年都会重置。我的想法是在数据库中创建单独的表格,以保留过去项目ID的记录,但我不认为这是最好的方法。
你有什么想法以最好的方式做到这一点吗?
答案 0 :(得分:0)
You can create a Mongo Sequence in a separate collection mycounters
db.mycounters.insert({ _id: "mySeq", seq: 0 })
Then define a function
to read the next value from the defined sequence
function getNextMySeq(name) {
var ret = db.mycounters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return ret.seq;
}
You can now use the function getNextMySeq
in you insert query to generate _id
.
Remember you can concatenate the sequence with other parts of your keys like below
db.c.insert({_id:'20' + getNextMySeq("mySeq") + '2018', name: 'aa'})
In my insert
query 20
& 2018
are hardcoded but you can actually have variables when you programatically prepare the insert.