V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
KillThunder
V2EX  ›  问与答

nodejs 操作 mongodb 的问题

  •  
  •   KillThunder · 2017-04-20 17:10:49 +08:00 · 1502 次点击
    这是一个创建于 2534 天前的主题,其中的信息可能已经有所发展或是发生改变。

    modejs 操作 mongodb 时,如果 mongodb 没有表,是不是会自动创建一个新表?

    7 条回复    2017-04-20 19:42:56 +08:00
    stiekel
        1
    stiekel  
       2017-04-20 17:23:13 +08:00   ❤️ 1
    MongoDB 中其实没有表的概念,只有集合。
    集合和数据库,都是在插入一条数据之后自动创建的,这个与 Node 没有关系。
    KillThunder
        2
    KillThunder  
    OP
       2017-04-20 17:50:37 +08:00
    @stiekel 感谢你的回复,那这个集合也应该有个名称吧,就是这个名称我们不需要单独的去创建?直接拿来用就可以了吗?
    yanzixuan
        3
    yanzixuan  
       2017-04-20 17:58:46 +08:00   ❤️ 1
    @KillThunder 直接用。自动创建。
    jiangzhuo
        4
    jiangzhuo  
       2017-04-20 18:52:59 +08:00
    楼上都说自动创建我差点就信了。。
    一般情况下都是
    1. 开发告诉 dba 要用哪些 collection , collection 的各种配置,是否 capped/capped 的大小 /是否自动创建_id 索引 /使用的 validator 等等参数。运维把数据库的 collection 创建好之后。
    2.dba 再给对应的 user 或者 role 加上这个 collection 的权限。
    3. 然后程序使用特定用户才能访问这个 collection 。
    当然一般 dba 都很懒直接给用户数据库的内建的 readWrite 角色(其实我见过的 dba 都懒得别说用户角色了有时候连用户都懒得创建,让运维不给外网开端口解决),这样用户是有在数据库中 createCollection 权限的当然也有 dropCollection 的权限,另外还有 dropIndex createIndex 的权限。。。如果这是一个 sql 数据库的 dba 给 sql 数据库配的权限你能想象吗。。。。
    ss098
        5
    ss098  
       2017-04-20 19:21:00 +08:00
    @jiangzhuo #4 你确定?这是你们公司的流程吧。
    jiangzhuo
        6
    jiangzhuo  
       2017-04-20 19:38:01 +08:00 via iPhone
    @ss098 对的我们公司的流程,然后运维 dba 开发全是我,然后关门大吉工商注销了。
    我觉得这应该是通用流程吧,不可能随便一个用户上去都能够 drop table ;的
    看看之前用阿里云 mongodb 不配权限不关外网端口的那些人,我现在也就相信世界上真的有公司的数据库上起来比他们公司网站还方便。
    ss098
        7
    ss098  
       2017-04-20 19:42:56 +08:00   ❤️ 1
    @jiangzhuo #6 哈哈,楼主只是问是否会自动创建, MongoDB 确实会自动创建的。

    这些步骤属于高级特性 / 开发流程了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5433 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 08:52 · PVG 16:52 · LAX 01:52 · JFK 04:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.