tout le monde. J'aime les mangas. Et maintenant j'apprends à aimer mongo aussi :-)MongoDB: Utilisez save() pour mettre à jour un document existant dans une collection
Il ya une explication de how to use save() to update an existing document in a collection in MongoDB PHP? mais je ne pouvais pas l'appliquer à la « réalité » :-)
> var mongo = db.things.findOne({name:"mongo"});
> print(tojson(mongo));
{"_id" : "497dab624ee47b3a675d2d9c" , "name" : "mongo"}
> mongo.type = "database";
database
> db.things.save(mongo);
> db.things.findOne({name:"mongo"});
{"_id" : "497dab624ee47b3a675d2d9c" , "name" : "mongo" , "type" : "database"}
Voici mon code de test du PHP:
<?php
$a=array('_id'=>'test_a','field1'=>'anything');
$b=array('_id'=>'test_a','field2'=>'anything else');
$m=new Mongo();
$c=$m->db->test;
$c->save($a);
$c->save($b);//overwrites the previous record
/*
//With update() it works fine
$filter=array('_id'=>'test_a');
$update=array('$set'=>array('field2'=>'anything else'));
$c->update($filter,$update);
//$c->save($filter,$update);//Also tried...
*/
$f=$c->find();
echo $f->count()." found \n";
$i=iterator_to_array($f);//mongo cursos iterator
$m->close();//disconnect mongo
print_r($i);
?>
Le fait est que dans l'exemple PHP save() Ecrase le tout objet dans l'exemple JS, il le met à jour. J'aimerais pouvoir reproduire en PHP comme dans JS.
Merci d'avance.
Dans http://www.mongodb.org/display/DOCS/Updating#Updating-ModifierOperations il est dit que "save() fait un upsert si x a un champ _id (x est un objet de style JSON et upsert signifie une mise à jour si présent, insérer s'il manque) ". – Roger
Je ne vois pas quel est le problème, les exemples JS et PHP ne font-ils pas la même chose? Dites-nous ce que vous attendez. Ne vous attendez pas à ce que nous configurions l'environnement et exécutiez votre code juste pour voir la sortie. – Theo
Merci pour la réponse. Si vous exécutez l'exemple php, vous verrez que save() remplace l'objet alors que dans l'exemple JS il le met à jour. J'aimerais pouvoir reproduire en PHP comme dans JS. – Roger