1
binux 2013-04-26 13:16:24 +08:00 1
操作不是原子的,可能会冲突
直接用_id不就好了 |
2
hilenlai OP @binux 以前用mysql,有点受它的自增id问题影响。如果要把_id存到session里面会不会太长? 而且get方法传参的时候也会特长啊
|
3
ljbha007 2013-04-26 14:30:22 +08:00
@hilenlai
id长不长完全没影响 你这里完全用不着数字ID 如果非要用数字ID也完全可以做到 参见官方文档 http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/ |
4
ljbha007 2013-04-26 14:42:24 +08:00
@hilenlai
你这个办法也可以 但是就是必须得给你的id加上unique限制 然后插入的时候得在死循环插入,如果插入失败则表示出现了竞态问题,id重复了,这时候重新再做一遍就好了 这个办法就是效率低 会增加很多查询压力和代码运行次数 说到底还不如重新设计字段改用ObjectID 除非是要统计点击次数什么的使用自增还可以接受 |
5
hussion 2013-04-26 15:59:25 +08:00
uid是根据机器码,时间戳等四项参数来计算的。。。
|
6
humiaozuzu 2013-04-26 16:04:28 +08:00
使用加密后的id如何?
http://v2ex.com/t/65414 |
7
hilenlai OP @ljbha007 考虑使用过mongodb的自增属性,但是stackover上一些人建议不使用这个(http://stackoverflow.com/questions/6645277/should-i-implement-auto-incrementing-in-mongodb)
@hussion 那pid 等等其他的id呢?没有那么多可以生成的啊 |
8
hilenlai OP @humiaozuzu 也是有点长,现在的解决方法是利用postgreSQL里面的序列(postgre sequence),来产生那个id。然后获取之后就插入mongodb,不知道这种做法会怎样~
|
11
wy315700 2013-04-26 17:16:08 +08:00
自增ID是sql时代的产物 不适合NOSQL
NOSQL应该使用UUID 方便分布式存取 直接留空_id 或者 用UUID生成器 |
13
wy315700 2013-04-26 21:52:07 +08:00 2
@hilenlai http://docs.mongodb.org/manual/reference/object-id/ 插入不含_id字段的记录时
mongodb 会根据 时间戳 机器ID PID 计数器 为这条记录生成一个12字节的ID, 当然也可以在客户端生成 http://api.mongodb.org/python/1.7/api/pymongo/objectid.html 如果你嫌objectid太少,可以用uuid, http://docs.python.org/2/library/uuid.html 用这个来取代自增ID还是有很多好处的,比如说可以防止别人猜测ID. |