请教:MongoDB的增量设计,某一字段自增或按某个值增长,保证唯一 。
请各位帮忙看一下, 谢谢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
利用 Counter Collection实现
利用一个单独的计数器集合去跟踪我们使用的最后一个数字序列。该_id字段包含了序列名称和序列字段中该序列最后的值。
1、插入计数器集合,设置初始值为userid:
` db.counters.insert(
{
_id: "userid",
seq: 0
}
) `
2、创建一个getNextSequence函数,参数为序列的name,函数使用findandmodify()方法去自动增长序列的值并返回增长之后的结果:
function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return ret.seq;
}
3、在接下来插入数据的时候,使用getNextSequence这个函数:
`db.users.insert(
{
_id: getNextSequence("userid"),//注意getNextSequence参数要与计数器集合中_id值一致
name: "Sarah C."
}
)
db.users.insert(
{
_id: getNextSequence("userid"),
name: "Bob D."
}
)`
4、你可以试着查看结果:
db.users.find()
5、_id字段包含了自动增长序列的值:
` {
_id : 1,
name : "Sarah C."
}
{
_id : 2,
name : "Bob D."
}`