2016-05-10 15 views
0

ここで、既にMongoDBに既存のレコードがある別の配列データを挿入する必要があります。

デシベルで、既存のレコード:

{ 
    "_id" : 1, 
    "name" : "main", 
    "sample_details" : [ 
     { 
      "detail_no" : 1, 
      "email" : "[email protected]", 
      "name" : "test", 
     }, 
     { 
      "detail_no" : 2, 
      "email" : "[email protected]", 
      "name" : "test12", 
     } 
    ], 
} 

は、私が "sample_details" に1つのより多くの配列データを挿入する必要があるとします。ここに私のコードですが、位置演算子 "$"はサポートしていません。私は私のクエリのための厳密解を知っている可能性があります:

コード

$array = array(
    'sample_details.$.detail_no' => 3, 
    'sample_details.$.email' => "[email protected]", 
    'sample_details.$.name' => "test123", 
); 

$this->mongo_db->update(table_name,array('_id'=>1),array('$set'=>$array),array('multiple'=>true)); 
+0

誰でも知っているなら、助けてください – Suresh

+0

レコードが挿入されていない場合、クエリで何をしたいですか? –

答えて

0

あなたが$push$pushAllまたは$addToSetのような演算子を使用するアレイにデータを挿入します。そのdocumentationを引用しているため

あなたは、位置演算子を使用することはできません。

配列フィールドは、クエリ文書の一部として表示される必要があります。

また、配列の要素を更新していて、インデックスを知らず、新しいものを挿入しない場合にのみ意味があります。

関連する問題