讨论:mongodb的id自增处理
发布于 11 年前 作者 duyinghua 22078 次浏览 最后一次编辑是 8 年前

话说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的话我不知道如何通过他来获取该条数据

我运行,没有成功,后台没有输出任何东西。另外,这个的原理是不是,存的每个表的最大的ID。

@duyinghua

model.find({"_id":Object('521604c2556de2b41d00000b')}, function(err, result){
    console.log("err : " + err + " result : " + result + "");
})

{_id : ObjectId(‘50a213a7637ffa4155b77f73’)}

楼主好啊,这个可以用在给发布的博客添加id吗

你好啊,大哥,可以请教您一下吗

弱弱的问问tablename是什么意思,如果想在一张表格中存三个不同的自增id,比如会员id,博客id,应该如何处理呢

遇到同样的问题,学习下,谢谢

回到顶部