• 袭
    2019-11-27
    如果我有两个字段a和b,希望对每个文档增加一个字段c=a-b. 试了一下用find. forEach然后每个文档执行一个uodate的话速度非常慢。有什么比较高效的方法吗?

    作者回复: 4.2可以做到:
    db.test.insert({a: 2, b: 3})
    db.test.updateMany({}, [{
        $set: {
            c: {
                $add: ["$a", "$b"]
            }
        }
    }])

    
     2
  • Aurora
    2019-12-19
    老师我问一下使用,mongodump的时候会给collection加lock吗?

    作者回复: 不会加lock。所以mongodump出来的不是一个一致的backup。通常可以加上 --oplog参数来获取一个某个时间点的快照类的备份。

    
     1
  • 齐宝金
    2019-11-15
    老师好,对于mongo副本集,如果有多个库,由于单集群达到瓶颈了,我想把一个库迁移出去,有什么方法吗,能达到像mysql主从实现吗?并且切换到新集群控制在切换ip的时间吗?

    作者回复: 如果可以停服务,可以用 mongodump -d xxx 方式
    如果不能停服,需要用一些工具:
    如果在阿里云,可以考虑mongoshake 工具
    MongoDB官方有mongomirror工具
    我们Tapdata也有一个工具,有免费3个月的使用期,如果只是一次性迁移够用了。

     1
     1
  • 水如天
    2020-01-15
    老师好,请教个问题。我们系统一开始使用es, 但是我们的一个index包含2000多个field,经常会出现写性能问题,请问mangdb对于写入的文档的字段,以及字段嵌套的深度由限制吗?

    作者回复: 那个没有限制。限制就是最大不能超过16MB。ES的长处是查询/搜索,写入从来不是它优势。

    MongoDB比较平衡点,增删改查都还不错。

    
    
  • 熊大
    2019-12-21
    为啥不需要输入账号密码就可以操作db……

    作者回复: 可以去问Eliot Horowitz... 程序员的惰性吧,写原型的时候谁都不喜欢折腾安全性的东西,麻烦。

    
    
  • Aurora
    2019-12-19
    使用mongodump去备份db,备份过程中会阻塞insert写入吗?是不是如果不想要一致性备份集,就不上锁,如果想要一致性的备份集,加--oplog参数,也不阻塞insert写入?

    作者回复: 备份不阻塞,除非你用fsyncLock()。
    不上锁的话,就用 --oplog

    
    
  • 海罗沃德
    2019-12-12
    python 3 的print改成方法了,要用print(client) 才行,print命令已经去除了

    作者回复: 好的谢谢提醒。

    
    
  • 白岩
    2019-12-02
    mongodb的动态特性有缺点嘛?作为一个oracle dba感觉极其不适应。

    作者回复: 有一些值得注意的地方

    1) schema 管理会复杂, 你不能一下确定这个集合到底是什么结构。解决方案是使用Schema Validation 或者 JSON Schema来定义这个集合的严格结构。 JSON Schema类似于关系数据库的schema,但是不同的是如果你需要修改这个schema的话可以随时更改,理论上也不需要对已有数据做更新或者迁移。

    
    
  • yong
    2019-11-19
    老师,请问python 的版本有什么限制么?

    作者回复: 我用的2.7,但是理论上Python 3也是okay的。

     1
    
  • Geek_530205
    2019-11-18
    老师您好,我以前用的mssql,如果一个服务器上有多个数据库,想迁移数据库的时候直接考走对应的数据库文件就好。如果是mongodb,发现没有对应的文件,请问除了把数据导出还有别的办法吗?

    作者回复: mongodb 不能这么玩,只能用mongodump 或者 mongoexport,或者用迁移工具。

    
    
  • 镜子
    2019-11-17
    请问下老师,比如在mysql批量插入,一次3000条左右比较合适,性能也不错,如果是mongodb,一次插多少条比较高效

    作者回复: 这个没有绝对值,通常和文档大小有关。如果在1KB以内的话,我会推荐用1000左右的batch size

    
    
  • 齐宝金
    2019-11-15
    老师好,请问下,想删除多行数据,得对多行数据进行备份,有什么工具可以生成反向语句insert进行备份吗

    作者回复: 换一个思路。使用MongoDB Ops Manager可以实现任意时间点恢复 - 比如你3:00执行删除动作,4:00发现有问题想回滚,那么可以使用ops manager 把数据库回到3:00的时候。

    类似的事情可以用命令行方式做,但是就不是小项目了。

    反向生成insert的没有见过,但是自己实现应该很简单。

     1
    
  • Y先生
    2019-11-14
    老师怎么不选java语言?后面案例也是python吗?

    作者回复: Python 语言最接近英语,也最合适演示。我可以考虑加入一些适当的Java示例在后续章节中。

     2
    
  • fedwing
    2019-11-13
    老师,有mongo源码分析的课程吗

    作者回复: 这个没有在计划内哦,受众可能不够大。

     4
    
我们在线,来聊聊吧