2012-03-31 10 views
2

Ich bin ziemlich neu in PHP und MongoDB, also wäre es wirklich hilfreich, wenn ich ein paar Vorschläge von euch bekommen hätte. Ich habe diese Schleife stundenlang durcheinandergebracht, aber ohne Erfolg.Eine MongoDB Insert-Anweisung schreiben

Dies ist in etwa meine Eingabe:

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++; 
} 

Es gibt:

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

Das letzte Problem ist, ich habe alles in einem Insert-Anweisung statt mit mehreren Insert-Anweisungen tatsächlich kombinieren Du siehst oben. Anstatt also 8 insert-Anweisungen zu generieren, versuche ich, 1 insert-Anweisung zu machen.

Irgendwelche Vorschläge?

Antwort

1

MongoDB hat keine Transaktionen, und Einsätze sind schnell und leicht, es gibt also keinen besonderen Grund, sie für eine so kleine Anzahl zu chargen. Während ich es vorher noch nicht benutzt habe, gibt es aber eine BatchInsert method die man ausprobieren kann.

+0

Ja, mein Code nimmt eine eingegebene CSV-Datei, so dass es in der Lage sein muss, eine große Anzahl von Datensätzen zu machen. – EGHDK

+0

Ich habe versucht, mit der BatchInsert-Methode, aber es schien nicht zu ändern, was ich brauchte. Irgendwelche anderen Ideen? – EGHDK

+0

Basierend auf Ihrer Frage, wie ich es verstehe, sollten Sie die Routine BatchInsert verwenden. Ich weiß nicht genau, welches Problem Sie haben. – gview