2012-03-31 89 views
2

我對PHP和MongoDB相當陌生,所以如果我從你們那裏得到一些建議,這將非常有幫助。我一直在幹這個循環好幾個小時,但無濟於事。編寫一個MongoDB插入語句

這大致是我輸入:

while ($currentCol<$maxCols){ 
    $obj = array($currentarray[0][$currentCol] => $currentarray[$currentRow][$currentCol]); 
    $collection->insert($obj); 
    echo $testing; 
    echo "<br />"; 
    print_r ($obj); 
    echo "<br />"; 
    $testing++; 
    $currentCol++; 
} 

它輸出:

1 
Array ([President ] => George Washington [_id] => MongoId Object ([$id] => 4f774d924f62e5ca37000160)) 
2 
Array ([Wikipedia Entry] => http://en.wikipedia.org/wiki/George_Washington [_id] => MongoId Object ([$id] => 4f774d934f62e5ca37000161)) 
3 
Array ([Took office ] => 30/04/1789 [_id] => MongoId Object ([$id] => 4f774d934f62e5ca37000162)) 
4 
Array ([Left office ] => 4/03/1797 [_id] => MongoId Object ([$id] => 4f774d934f62e5ca37000163)) 
5 
Array ([Party ] => Independent [_id] => MongoId Object ([$id] => 4f774d934f62e5ca37000164)) 
6 
Array ([Portrait] => GeorgeWashington.jpg [_id] => MongoId Object ([$id] => 4f774d934f62e5ca37000165)) 
7 
Array ([Thumbnail] => thmb_GeorgeWashington.jpg [_id] => MongoId Object ([$id] => 4f774d934f62e5ca37000166)) 
8 
Array ([Home State] => Virginia [_id] => MongoId Object ([$id] => 4f774d934f62e5ca37000167)) 

我有最後一個問題是實際上一切組合成一個INSERT語句而不是多重插入語句作爲你看到上面。所以,而不是生成8插入語句,我試圖讓它做出1插入語句。

有什麼建議嗎?

回答

1

MongoDB沒有事務處理,並且插入是快速和輕量級的,所以沒有特別的理由嘗試批量處理這麼小的數量。雖然我以前沒有使用它,但是您可以嘗試使用BatchInsert method

+0

是的,我的代碼需要一個輸入的CSV文件,所以它也必須能夠執行大量的記錄。 – EGHDK 2012-03-31 21:00:05

+0

我嘗試過使用BatchInsert方法,但它似乎沒有將其改變爲我所需要的。任何其他想法? – EGHDK 2012-04-01 02:23:41

+0

根據我的理解,您應該使用BatchInsert例程。我不清楚你有什麼問題。 – gview 2012-04-02 21:47:36