सभी को। मुझे मंगा पसंद है। और अब मैं भी मोंगो से प्यार करना सीख रहा हूं :-)MongoDB: किसी संग्रह में मौजूदा दस्तावेज़ को अद्यतन करने के लिए सहेजें() का उपयोग करें
how to use save() to update an existing document in a collection in MongoDB PHP का स्पष्टीकरण है? लेकिन मैं यहाँ अपने परीक्षण कोड है 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
$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 में पुन: पेश कर सकता हूं।
अग्रिम धन्यवाद।
http://www.mongodb.org/display/DOCS/Updating#Updating-ModifierOperations में यह कहा गया है कि "सहेजें() एक अपरिवर्तित करता है यदि x में _id फ़ील्ड है (x कुछ JSON शैली ऑब्जेक्ट और अपरर्ट का मतलब है अद्यतन यदि मौजूद है; लापता होने पर डालें) "। – Roger
मुझे नहीं पता कि समस्या क्या है, क्या जेएस और PHP उदाहरण एक ही काम नहीं करते हैं? हमें बताएं कि आप क्या उम्मीद कर रहे हैं। आउटपुट देखने के लिए हमें पर्यावरण स्थापित करने और अपना कोड चलाने की उम्मीद न करें। – Theo
उत्तर के लिए धन्यवाद। यदि आप php उदाहरण चलाते हैं, तो आप देखेंगे कि सहेजने() जेएस उदाहरण में ऑब्जेक्ट को ओवरराइट करता है, यह इसे अपडेट करता है। काश मैं जेएस में समान PHP में पुन: पेश कर सकता हूं। – Roger