天天看點

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