mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行操作,但它没有像mysql那样insert(value、value、value...)那样的语法,也不支持transaction 所以mongodb不能批量插入数据,如果你要批量插入数据,可以在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 $users[] = array('username' => 'user'.$i, 'i' => $i);
}
$ok = $collection->batchinsert($users);