V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eriale
V2EX  ›  程序员

各位在开发中怎么使用 mongodb?更倾向于用 orm 还是直接用语言中自带的驱动?

  •  
  •   eriale · 2014-09-25 09:34:11 +08:00 · 6873 次点击
    这是一个创建于 3712 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为mongodb的驱动已经比较方便,所以我目前是直接用驱动来做mongodb操作。

    不过我觉得这样有点问题,没有在代码中明确指出文档的结构,如果一段时间不看代码,还要在代码中的mongodb操作语句去推测文档结构。另一个我感觉不好的就是一些序列化工具不好用了,大部分的序列化工具还是转成了语言中的对象,而不是转成dict。

    大家在开发的时候有没有这种感觉呢?如果转成用orm来操作mongodb,现在的orm开发到什么成都了?有什么局限性吗?
    10 条回复    2018-08-14 15:42:21 +08:00
    pythoner
        1
    pythoner  
       2014-09-25 09:40:03 +08:00
    以在python项目里为例,我是先用mongoengine(ORM)定义好Models,业务逻辑中对性能要求不高或者需要做save操作的地方,使用mongoengine,因为它可以对数据做有一些有效性验证;在对性能要求比较高的地方,通常会直接用pymongo(python中的mongodb驱动)来提升性能
    eriale
        2
    eriale  
    OP
       2014-09-25 09:45:49 +08:00
    @pythoner 嗯,直接使用驱动,数据校验也是一个头痛的东西。我现在也在想是不是要换成你这样的方式来开发。
    yueyoum
        3
    yueyoum  
       2014-09-25 10:41:22 +08:00
    全部用 mongoengine吧, documents 复杂了, 分分钟把你搞晕
    jiangzhuo
        4
    jiangzhuo  
       2014-09-25 10:55:52 +08:00
    node在考慮性能的情況下 更傾向於語言自帶的驅動
    davidli
        5
    davidli  
       2014-09-25 11:12:26 +08:00
    不太喜欢 ORM, 所以一直直接用 motor 自带的方法
    meta
        6
    meta  
       2014-09-25 13:33:43 +08:00
    关系数据库用orm是因为关系模型和对象模型差别太大,像mongodb这样的完全不必要再去做这种映射了吧。如果是为了记住文档结构去用orm,那么你的工程文案工作需要加强了。
    sethverlo
        7
    sethverlo  
       2014-09-25 14:21:40 +08:00
    目前在用 mongoid, 挺好用的…比如说 embedded 操作,还有 dirty tracking 都是很方便的操作…

    缺点是用多了以后老记不住原生 mongodb 怎么写,ruby 的 map 也是太慢…

    FYI: http://mongoid.org/en/mongoid/docs/documents.html
    kzing
        8
    kzing  
       2014-09-25 15:10:57 +08:00
    推荐一下mongokit, 在 pymongo 上进一步封装了, 简单易用, 唯快不破~

    LINK: https://github.com/namlook/mongokit
    ethego
        9
    ethego  
       2015-08-29 17:20:22 +08:00
    有个问题,如果使用 orm ( mongoengine ),在修改了数据模型以后怎么迁移数据库?
    wizardforcel
        10
    wizardforcel  
       2018-08-14 15:42:21 +08:00 via Android
    python 的话,用不用 orm 有区别嘛??只不过原来访问键值要用方括号,现在要用点。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1555 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:13 · PVG 01:13 · LAX 09:13 · JFK 12:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.