CNode

讨论:mongodb的id自增处理

Dduyinghua发布于14 年前最后回复10 年前18 回复23794 浏览0 收藏

话说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)

C
cony138#1·14 年前

我是mongo初学者,用的是mongoose,我用_id来find好像找不到,是不是mongo内的id最好还是我们自己设置一个字段来读取啊?

S
saber#3·14 年前

什么意思,为什么要自己处理ID?

D
duyinghua#4·14 年前
引用 saber什么意思,为什么要自己处理ID?

用了你就知道了,我也希望能通过_id来操作,可是技术水平不够啊

F
fyddaben#5·13 年前

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

I
inosqlorg#6·13 年前
L
lellansin#7·13 年前
引用 saber什么意思,为什么要自己处理ID?

@duyinghua

model.find({"_id":Object('521604c2556de2b41d00000b')}, function(err, result){
    console.log("err : " + err + " result : " + result + "");
})
L
lmh2072005#8·13 年前

{_id : ObjectId('50a213a7637ffa4155b77f73')}

M
mygod#12·13 年前

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

I
imzshh#13·14 年前

也是这么做的。$inc是原子操作,所以不用担心并发问题。

S
saber#14·14 年前
引用 saber什么意思,为什么要自己处理ID?

@duyinghua _id 你一定要ID自增喽?ID自增有什么意义呢?

D
duyinghua#15·14 年前
引用 saber什么意思,为什么要自己处理ID?

@saber 首先自增不是目的,目的是每次的新增数据的id都惟一,用_id的话我不知道如何通过他来获取该条数据

S
saber#16·14 年前
M
mygod#17·13 年前

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

S
sunfeng90#18·10 年前

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

参与回复
登录后即可参与回复。登录