讨论:mongodb的id自增处理
发布于 13 年前 作者 duyinghua 23464 次预览 最后一次回复是 9 年前 来自
话说mongodb的id没法自动递增提供了个_id也不知道怎么获取对象的字符串来用。先说说我的方法吧定义了一个ids表用来存放控制所有表的id,下面代码是Model部分
function Ids(tablename, id) {
this.id = id;
this.tablename = tablename;
}
module.exports = Ids;
Ids.getId = function (tablename, callback) {
mongodb.open(function (err, db) {
db.collection('ids', function (err, collection) {
collection.findAndModify({"tablename":tablename}, [], {$inc:{'id':1}}, {new:true, upsert:true}, function (err, doc) {
mongodb.close();
callback(doc.id);
});
});
});
}
各位攻城狮你们怎么处理的啊
18 回复
也是这么做的。$inc是原子操作,所以不用担心并发问题。
我是mongo初学者,用的是mongoose,我用_id来find好像找不到,是不是mongo内的id最好还是我们自己设置一个字段来读取啊?
_id是一个mongo数据库的对象而不是一个数字或字符串类型
什么意思,为什么要自己处理ID?
用了你就知道了,我也希望能通过_id来操作,可是技术水平不够啊
@duyinghua _id 你一定要ID自增喽?ID自增有什么意义呢?
@saber 首先自增不是目的,目的是每次的新增数据的id都惟一,用_id的话我不知道如何通过他来获取该条数据
@duyinghua
db.toId我运行,没有成功,后台没有输出任何东西。另外,这个的原理是不是,存的每个表的最大的ID。
MongoDB 自增id的实现 http://inosql.org/topic/50caa33fee680fee79000c82
@duyinghua
{_id : ObjectId(‘50a213a7637ffa4155b77f73’)}
楼主好啊,这个可以用在给发布的博客添加id吗
这是我用的方法 http://李大双.中国/2013/09/04/mongoose-zi-zeng-id/index.html
你好啊,大哥,可以请教您一下吗
@MyGod
https://github.com/lidashuang/coffeecup/blob/master/app/models/user.coffee#L56-L67 https://github.com/lidashuang/coffeecup/blob/master/app/models/counter.coffee#L1-L13
弱弱的问问tablename是什么意思,如果想在一张表格中存三个不同的自增id,比如会员id,博客id,应该如何处理呢
遇到同样的问题,学习下,谢谢