私のコレクションの内容はこの形式です、
{ "_id" : ObjectId("50535036381ef82c08000002"),"source_references" : [
{
"_id" : ObjectId("50535036381ef82c08000001"),
"name" : "abc",
"key" : "123"
}]
}
名前とキーがネストされた配列に存在しない場合は、 「source_references」に別の配列を挿入します。それ以外の場合は挿入しません。これが私が望む結果です、
{ "_id" : ObjectId("50535036381ef82c08000002"),"source_references" : [
{
"_id" : ObjectId("50535036381ef82c08000001"),
"name" : "abc",
"key" : "123"
}
{
"_id" : ObjectId("50535036381ef82c08000003"),
"name" : "reuters",
"key" : "139215"
}]
}
これが私が試したことです:
$Update_tag = array('$addToSet' => array("source_references.$" => array("name" => "reuters", "key" => $r_id)));
$mycollection->update(array("_id" => $id), $Update_tag);
しかし、ネストされた配列内に別の配列を挿入することはできません。また、新しい配列がsource_referencesに挿入された場合にのみ、「_ id」フィールド(ネストされた配列内)を作成したいと思います。
どこが間違っているのですか?私の質問がはっきりしていることを願っています。