话说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
我是mongo初学者,用的是mongoose,我用_id来find好像找不到,是不是mongo内的id最好还是我们自己设置一个字段来读取啊?
D
引用 cony138我是mongo初学者,用的是mongoose,我用 id来find好像找不到,是不是mongo内的id最好还是我们自己设置一个字段来读取啊?
_id是一个mongo数据库的对象而不是一个数字或字符串类型
S
什么意思,为什么要自己处理ID?
D
引用 saber什么意思,为什么要自己处理ID?
用了你就知道了,我也希望能通过_id来操作,可是技术水平不够啊
F
我运行,没有成功,后台没有输出任何东西。另外,这个的原理是不是,存的每个表的最大的ID。
I
MongoDB 自增id的实现 http://inosql.org/topic/50caa33fee680fee79000c82
L
引用 saber什么意思,为什么要自己处理ID?
@duyinghua
model.find({"_id":Object('521604c2556de2b41d00000b')}, function(err, result){
console.log("err : " + err + " result : " + result + "");
})
L
{_id : ObjectId('50a213a7637ffa4155b77f73')}
L
M
L
M
弱弱的问问tablename是什么意思,如果想在一张表格中存三个不同的自增id,比如会员id,博客id,应该如何处理呢
I
也是这么做的。$inc是原子操作,所以不用担心并发问题。
S
引用 saber什么意思,为什么要自己处理ID?
@duyinghua _id 你一定要ID自增喽?ID自增有什么意义呢?
D
引用 saber什么意思,为什么要自己处理ID?
@saber 首先自增不是目的,目的是每次的新增数据的id都惟一,用_id的话我不知道如何通过他来获取该条数据
S
引用 saber什么意思,为什么要自己处理ID?
@duyinghua db.toId
M
楼主好啊,这个可以用在给发布的博客添加id吗
S
遇到同样的问题,学习下,谢谢
参与回复
登录后即可参与回复。登录