2015-10-13 71 views
-1
$StringJsonVariable = '{"data": {"Parent": { "abc": [{"value": "10","code": "c102"},{"value": "20","code": "c103" }]}}'; 


     $JsonVariable = json_decode($StringJsonVariable,true); 
     $connection = new MongoClient(); 
     $db = $connection -> dbvalue; 
     $collection = $db -> collVal; 

     foreach($JsonVariable['data']['Parent'] as $key => $value[0]){ 
     $val=$value[0]; 

     $collection->update(array('_id'=>"abc"),array('$addToSet' => array('VALUES' => array('$each' =>$val), array('upsert' => true))));} 

試過使用addtoSet每個使用上面的語法。我想要插入
單個呼叫。如何使用phpMongo將整個Unique文檔插入到MongoDB中的數組中?

+0

Upserts和添加值以陣列是基本上在單個操作中互相排斥,除非你的數據補充的是一個「真正的集合」,這是完全唯一的。你沒有說明你的實際問題是什麼,但我懷疑'$ addToSet'沒有做你想做的事,因爲只有一個字段被認爲是唯一的,而不是數組的所有內容。這裏有幾個答案(我知道,因爲我已經寫了幾個),基本上說,如果你想要不是所有屬性的獨特元素,那麼你需要多個操作。批量操作提供一個請求,但不是一個操作。 –

回答

0
$JsonVariable = json_decode($StringJsonVariable,true); 

$connection = new MongoClient(); 
$db = $connection -> dbratings; 
$collection = $db -> ratings; 


foreach($JsonVariable['data']['Ratings'] as $key => $value[0]) 
{ 
//$val=$value[0]; 
$val=$value[0]; 
$values=array(); 
foreach($val as $key=>$a) 
{ 
array_push($values, (object)$a); 

} 
$collection->update(array('_id'=>"[email protected]"), 
         array('$addToSet' => 
          array('ratings' => 
           array('$each' => $values))), 
         array('upsert'=>true)); 
} 
+0

謝謝你Vinay。 –

相關問題