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);