我有一个 Perl 脚本,它从 SQL 数据库($row 变量)中提取一个表并尝试像这样进行 MongoDB 更新:
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 类型的十六进制字符串?应该注意的是,我对 perl 一无所知;如果更多的代码是相关的,我会尽快发布任何部分。它有 300 行,所以我不想立即包含整个文件。
编辑:我应该在任何人建议之前提到使用 update_one 而不是 update 返回完全相同的结果。