V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
crny520
V2EX  ›  Node.js

mongoose的Schema能不能设自id自增长int类型

  •  1
     
  •   crny520 · 2014-01-24 18:56:26 +08:00 · 7670 次点击
    这是一个创建于 3962 天前的主题,其中的信息可能已经有所发展或是发生改变。
    7 条回复    1970-01-01 08:00:00 +08:00
    cyr1l
        1
    cyr1l  
       2014-01-24 19:33:09 +08:00
    Mongodb 的 id 不是数字型啊. 是 ObjectId .
    是 52ddc4d77d487c4f690000XXX 这样的. 没法自增长吧.

    实在有这个需求的, 可以虚拟一个 id 的 字段嘛. 保存前先看最后一个是啥, 然后 ++ , 效率肯定差就是的了.
    lanceli
        2
    lanceli  
       2014-01-24 19:38:51 +08:00 via iPhone
    crny520
        3
    crny520  
    OP
       2014-01-24 19:42:28 +08:00
    @lanceli thanks...
    crny520
        4
    crny520  
    OP
       2014-01-24 20:21:59 +08:00
    @lanceli 只能用createConnection数据库?不能用connect连数据库?
    yyfearth
        5
    yyfearth  
       2014-01-25 04:18:22 +08:00 via iPad
    mongodb 官方说了 不建议这么做
    crny520
        6
    crny520  
    OP
       2014-01-25 10:14:22 +08:00
    @yyfearth 52ddc4d77d487c4f690000XXX太恶心了。。。
    yyfearth
        7
    yyfearth  
       2014-01-25 12:27:04 +08:00
    @crny520 我做了几个项目,在设计的时候都这么觉得的,所以都计划用 autoinc int,结果后面在实现都由于种种原因都换回来了
    另外你看他们如何实现自增的,你会觉得比 52ddc4d77d487c4f690000XXX 更恶心
    首先ObjectId是在同一个节点下自增的,如果你非要用int那么就会造成可并发和多节点的问题,当然还要影响性能
    如果你保证只在一节点上使用,那么你可以用 autoinc int: http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
    (我是觉得很恶心的实现)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:53 · PVG 04:53 · LAX 12:53 · JFK 15:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.