皆さん。私はマンガが大好きです。そして今、私はモンゴーも愛することを学んでいます:-)MongoDB:コレクション内の既存の文書を更新するにはsave()を使用してください。
how to use save() to update an existing document in a collection in MongoDB 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);
?>
事実はPHPの例では(保存することである)、オブジェクト間を上書きしますが、私はここに私のテストコードです
> 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"}
:-) PHPの「現実」にそれを適用できませんでしたJSの例では、それを更新します。 PHPでJSと同じように再現できることを願っています。
ありがとうございます。 JSの例では
http://www.mongodb.org/display/DOCS/Updating#Updating-ModifierOperationsでは、xが_idフィールドを持っていると、save()はアップサートを行います(xはJSONスタイルのオブジェクトでupsertは更新を意味します)。存在する場合は挿入し、欠落している場合は挿入してください)。 – Roger
私は問題が何かを見ていない、JSとPHPの例は同じことをしないのですか?あなたが期待していることを教えてください。私たちが環境を設定し、コードを実行して出力を見ることを期待しないでください。 – Theo
返事をありがとう。 phpの例を実行すると、save()はオブジェクトを上書きし、JSの例ではオブジェクトを更新します。 PHPでJSと同じように再現できることを願っています。 – Roger