2012-11-08 12 views
5

मैं निम्नलिखित कोड चला रहा हूं और यह बहुत अच्छा काम करता है, अगर कोई रिकॉर्ड मौजूद नहीं है तो यह एक नया बनाता है। मैं जो करने की कोशिश कर रहा हूं वह इस क्वेरी को संशोधित करता है ताकि 'v' फ़ील्ड +1 भी बढ़ाए लेकिन मुझे कोई भाग्य नहीं है। क्या कोई मेरी मदद कर सकता है?php mongodb - अपरर्ट काम नहीं कर सकता

  $result = $collection->update(
       array('k'=>md5(SITE_ID.'-'.$_SERVER['HTTP_X_FORWARDED_FOR'])), 
       array('$set'=> 
        array(
         'k'=>md5(SITE_ID.'-'.$_SERVER['HTTP_X_FORWARDED_FOR']),                 'st'=>SITE_ID, 
         'ur'=>$_GET['u'],             
         'ts'=>time(), 
         'dt'=>date('Ymd'), 
         'ur'=>$_GET['p'], 
         'v'=>1 
        ), 
        array(
         '$inc' => array('v' => 1) 
        ), 
       ), 
       array('upsert'=>true) 
      ); 

उत्तर

6

रखें दोनों $set और एक वस्तु में $inc:

$result = $collection->update(
    array('k'=>md5(SITE_ID.'-'.$_SERVER['HTTP_X_FORWARDED_FOR'])), 
    array(
     '$set'=> array(
       'k'=>md5(SITE_ID.'-'.$_SERVER['HTTP_X_FORWARDED_FOR']),                 'st'=>SITE_ID, 
       'ur'=>$_GET['u'],             
       'ts'=>time(), 
       'dt'=>date('Ymd'), 
       'ur'=>$_GET['p'] 
      ), 
     '$inc' => array('v' => 1) 
    ), 
    array('upsert'=>true) 
); 
+0

कि काम किया, धन्यवाद! – Joe

0

आप $ इंक संशोधक liek उपयोग कर सकते हैं: तो अपने मामले में

{ $inc : { field : value } } 

:

$result = $collection->update(
    array('k'=>md5(SITE_ID.'-'.$_SERVER['HTTP_X_FORWARDED_FOR'])), 
    array('$set'=> 
     array(
      'k'=>md5(SITE_ID.'-'.$_SERVER['HTTP_X_FORWARDED_FOR']),                 'st'=>SITE_ID, 
      'ur'=>$_GET['u'],             
      'ts'=>time(), 
      'dt'=>date('Ymd'), 
      'ur'=>$_GET['p'], 
      array('$inc' => array('v' => 1)) 
     ), 
    ), 
    array('upsert'=>true) 
); 

मैं बस आप वास्तव में क्षेत्र का उपयोग कर रहे देखा हालांकि उपरोक्त उदाहरण चाहिए काम।

यहाँ पीएचपी दस्तावेज़ में एक उदाहरण है: http://php.net/manual/en/mongocollection.update.php#example-1470

संबंधित मुद्दे