MongoDB: Verwenden Sie save() zum aktualisieren eines vorhandenen Dokuments in eine collection

jeder. Ich Liebe manga. Und jetzt Lerne ich zu lieben mongo zu 🙂

Gibt es eine Erklärung des wie verwenden von save() zum aktualisieren eines vorhandenen Dokuments in eine collection in MongoDB PHP? aber ich konnte es nicht anwenden, um die PHP ' s "Wirklichkeit" 🙂

> 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"}

Hier mein test code:

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

Tatsache ist, dass in der PHP-Beispiel save() überschreibt das Objekt, während in der JS. B. es aktualisiert. Ich wünschte, ich kann es reproduzieren, in PHP das gleiche wie in JS.

Vielen Dank im Voraus.

  • In mongodb.org/display/DOCS/Updating#Updating-ModifierOperations es wird gesagt, dass "speichern" () führt ein einem einfachen Beispiel: wenn x eine _id Feld (x einige JSON-style-Objekt und upsert bedeutet, update, falls vorhanden, einfügen, wenn Sie fehlt)".
  • Ich sehe nicht, was das problem ist, nicht die JS-und PHP-Beispiele, die das gleiche tun? Sagen Sie uns, was es ist, Sie erwarten. Erwarte nicht, dass wir die Umgebung einrichten und ausführen von code nur um die Ausgabe zu sehen.
  • Danke für die Antwort. Wenn Sie die Ausführung des php-Beispiel, werden Sie sehen, dass save() überschreibt das Objekt, während in der JS. B. es aktualisiert. Ich wünschte, ich kann es reproduzieren, in PHP das gleiche wie in JS.
  • Hi @Roger - keine Notwendigkeit Anhängen [GELÖST] an den Titel, es gibt grafische Weise, in der die Fragen mit Antworten akzeptiert werden identifiziert in der Liste.
  • Gut, ich bin sorry, wenn du so denkst. Soweit ich weiß, die Seite ist mit einem ernsthaften problem mit SEO-kämpfen gegen die Böschung. Das Wort GELÖST, irgendwo in die Titel kann Hilfe bei der Lösung dieses Problems.
InformationsquelleAutor Roger | 2011-01-01
Schreibe einen Kommentar