2016-08-23 3 views
2

J'insère plusieurs enregistrements d'un fichier csv dans mongodb.PHP MongoDb insert supprime tous les anciens enregistrements

Les enregistrements sont insérés, mais chaque fois que je suis en cours d'exécution du script, tous les enregistrements précédents est supprimé et seuls les nouveaux enregistrements sont laissés

$connection= new \MongoClient(); 
$db = $connection->selectDB('mydb'); 
$collection = $db->selectCollection('users'); 

while (($data = fgetcsv($file, 0, ",")) !==FALSE) { 
try{ 
     $userData['_id'] = new \MongoId(); 
     $userData['name'] = $data['0']; 
     $userData['email'] = $data['1']; 
     $userData['extra_info'] = $data['2']; 


     $collection->insert($userData); 
    }catch(MongoCursorException $e){ 
     // This is where I caught the duplicate id 
     print_r($e->doc['err']); 

     // Kill the procedure 
     die(); 
    } 
} 
+0

D'où vient $ collecte et parsedData $ provenaient? – lippoliv

+0

Pouvez-vous aussi publier quelle version de PHP et quelle version de MongoDB? – lippoliv

Répondre

0

Vous utilisez insert, s'il vous plaît utiliser méthode de mise à jour pour réserver les records aussi ...

à jour:

MongoDB » Les méthodes update() et save() sont utilisées pour mettre à jour le document dans une collection. La méthode update() met à jour les valeurs dans le document existant tandis que la méthode save() remplace le document existant par le document transmis dans la méthode save().

Syntaxe

db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA) 

C'est tout