私は私のmongoデータベースで次のデータを持っている:私は今、私が追加する必要があるデータが含まれているCSVファイルをループするスクリプトを書いてい
{ "_id" :
ObjectId("581c97b573df465d63af53ae"),
"ph" : "+17771111234",
"fax" : false,
"city" : "abd",
"department" : "",
"description" : "a test"
}
資料。例えば、データは次のようになります。
{ "_id" :
ObjectId("581c97b573df465d63af53ae"),
"ph" : "+17771111234",
"fax" : false,
"city" : "abd",
"department" : "",
"description" : "a test",
"contact_locations": [
{
"stime": "10:15",
"etime": "12:15",
"email": "[email protected]"
},
{
"stime": "1:00",
"etime": "9:00",
"email": "[email protected]"
},
]
}
問題
私は「コード:
+17771111234, 10:15, 12:15, [email protected]
+17771111234, 1:00, 9:00, [email protected]
は最終的に私はこのようになりますMongoのドキュメントで終わるしたいです書かれたものは、既存のものに追加するのではなく、実際に新しい文書を作成しています。そして、実際には、CSVファイルの行ごとに新しい文書を作成することさえありません。なぜそれをまだ十分にデバッグしていないのですか。 csvファイルの行ごとに
コード
は、私が「追加する方法はありwhile(!$csv->eof() && ($row = $csv->fgetcsv()) && $row[0] !== null) {
//code that massages the $row into the way I need it to look.
$data_to_submit = array('contact_locations' => $row);
echo "proving that the record already exists...: <BR>";
$cursor = $contact_collection->find(array('phnum'=>$row[0]));
var_dump(iterator_to_array($cursor));
echo "now attempting to update it....<BR>";
// $cursor = $contact_collection->update(array('phnum'=>$row[0]), $data_to_submit, array('upsert'=>true));
$cursor = $contact_collection->insert(array('phnum'=>$row[0]), $data_to_submit);
echo "AFTER UPDATE <BR><BR>";
$cursor = $contact_collection->find(array('phnum'=>$row[0]));
var_dump(iterator_to_array($cursor));
}
}
質問
次のロジックを実行していますよ"文書に?または、既存の文書を取得し、配列として保存し、連絡先の場所の配列をメイン文書とマージしてから再保存する必要がありますか?
「contact_locations」オブジェクトがドキュメント内にすでに存在するかどうかを確認するにはどうすればよいですか?