私のmongodbコレクションの内容は次の形式です
{
"_id" : ObjectId("50072668b4a6de94100000bb"),
"addresses" : [
{
"_id" : ObjectId("50072668b4a6de94100000bf"),
"address1" : "66 Wadsworth Park Dr",
"address2" : null,
"city" : "Draper",
"country" : "United States",
"country_code" : "US",
"name" : "main",
"primary" : true,
"state" : "Utah",
"zip" : "84020"
}
]
}
コレクション内に別の住所の詳細を追加しようとしています。そのため、コンテンツは次のようになります。
{
"_id" : ObjectId("50072668b4a6de94100000bb"),
"addresses" : [
{
"_id" : ObjectId("50072668b4a6de94100000bf"),
"address1" : "66 Wadsworth Park Dr",
"address2" : null,
"city" : "Draper",
"country" : "United States",
"country_code" : "US",
"name" : "main",
"primary" : true,
"state" : "Utah",
"zip" : "84020"
}
{
"_id" : ObjectId("50072668b4a6de9410000023"),
"address1" : "a",
"address2" : "b",
"city" : "c",
"country" : "d",
"country_code" : "d",
"name" : "e",
"primary" : "f",
"state" : "g",
"zip" : "h"
}
]
}
これは、住所フィールドを更新するために書いたコードです。
$add_address = array('$addToSet' => array("addresses" => array("_id" => new MongoId(), "address1" => $address1, "address2" => $address2, "city" => $city, "country" => $country, "country_code" => $country_code, "name" => $name, "primary" => $primary, "state" => $state, "zip" => $zip)));
$mycollection->update(array("_id" => new MongoId($id)), $add_address);
しかし、このコードは内容を更新していません。一方、レコード全体を削除しています。私が受け取った例外メッセージは、
Fatal error: Uncaught exception 'MongoCursorException' with message 'false'
私が持っている「アドレス」は埋め込みオブジェクトです。埋め込みオブジェクトで「addToSet」を使用できるかどうか疑問に思っています。
どこが間違っているのですか?