zoukankan      html  css  js  c++  java
  • MongoDB不支持批量插入

    mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行操作,但它没有像mysql那样insert(value、value、value...)那样的语法,也不支持transaction
    所以mongodb不能批量插入数据,如果你要批量插入数据,可以在mongodb里写一个循环,它支持for等语法。


    因为MongoDB的底层就不支持这种操作。
    从MongoDB的oplog模式中可以看出,MongoDB的每次op都是独立执行的最小单元,因此,不会存在多个op组合成一个执行的情况。因此在各种API中都不会存在这种批量插入的操作。

    某网友提到他的理解,觉得很有道理:
    这里还是涉及到大家经常用到的传统关系型数据库和NoSQL的本质区别问题,NoSQL的每次操作都非常轻量级,小型化,除了数据的写入外基本没有多余的操作。
    类比:MongoDB就是放东西(数据)时把东西扔入相应的柜子(数据库)即可,而MySQL则要保持与送东西人的沟通(双向连接保持),东西的折叠整理分格存储(有模式)。
    MySQL的批量插入就是减少了沟通以及分格等过程,而MongoDB本身就不存在这些过程,因此MongoDB就不存在批量插入这个概念了。

    我以前测验用php进行批量向mongodb插入数据的代码:

    $conn = new Mongo();


    $db = $conn->selectDB("test");//这里设置数据库名称

    $collection = $db->mytable;//选择表
    /*
    +----------------------------------------------------------------
    批量插入数据,一次插入10万条数据。把数字改掉就可以多插入些
    +----------------------------------------------------------------
    */
    $users = array();
    for ($i = 0; $i<100000; $i++) {
      $users[] = array('username' => 'user'.$i, 'i' => $i);
    }

    $ok = $collection->batchInsert($users);

  • 相关阅读:
    搭建AngualarJS开发环境
    博客从博客园迁移到github上
    探讨Android中的内置浏览器和Chrome
    Netbeans配置Xdebug
    关于 Xcode 调试工具 GDB and LLDB
    关于ios 运行时 介绍的比较详细的帖子
    你不知道的KVO的内部实现
    sqlite 判断表中是否包含 某个字段
    发一些靠谱的招聘网站(含ios)
    解析 友盟崩溃信息
  • 原文地址:https://www.cnblogs.com/wangtao_20/p/3273679.html
Copyright © 2011-2022 走看看