SQL データベース ($row 変数) からテーブルを取得し、次のように MongoDB の更新を試みる Perl スクリプトがあります。
my $res = $users->update({"meeting_id" => $row[0]},
{'$set' => {
"meeting_id" => $row[0],
"case_id" => $row[1],
"case_desc" => $row[2],
"date" => $row[3],
"start_time" => $row[4],
"end_time" => $row[5],
#"mediator_LawyerID" => $row[6],
"mediator_LawyerIDs" => \@medLawIds,
"case_number" => $row[6],
"case_name" => $row[7],
"location" => $row[8],
"number_of_parties" => $row[9],
"case_manager" => $row[10],
"last_updated" => $row[11],
"meeting_result" => $row[12],
"parties" => \@partyList
}},
{'upsert' => 1}) or die "I ain't update!!!";
私のクライアントは、メディエーターに送信される ICS スタイルのカレンダーの招待状を希望しています。したがって、更新または挿入が行われたかどうかを知る必要があります。MongoDB::UpdateResult のドキュメントは、これがそのようなプロパティにアクセスする方法であることを暗示しています。
my $id = $res->upserted_id;
だから私は試しました:
bless ($res,"MongoDB::UpdateResult");
my $id = $res->upserted_id;
このコードの後 $id は次のようになります。
HASH(0x356f8fc)
これらは実際のIDですか?その場合、Mongo の ObjectId 型にキャストできる 16 進数の文字列に変換するにはどうすればよいですか? 私はperlについてまったく何も知らないことに注意してください。より多くのコードが関連する場合は、リクエストに応じてセクションをできるだけ早く投稿します。300 行あるので、すぐにファイル全体を含めたくありませんでした。
編集:誰かがこれを提案する前に、 update の代わりに update_one を使用するとまったく同じ結果が返されることを言及する必要があります。