我想在不丢失perl脚本集合的其他字段的情况下更新字段。
例如我有这个集合:
{
"userid": 1234,
"username": "tester",
"password": "*****",
"fullname": "For Test Only",
"emails" :[
{ "email": "test1@mail.com", "active": true },
{ "email": "test2@mail.com", "active": true }
]
}
我想改为:
{
"userid": 1234
"username": "tester",
"password": "*****",
"fullname": "For Test Only",
"emails" :[
{ "email": "test1@mail.com", "active": false},
{ "email": "test2@mail.com", "active": true }
]
}
当我尝试使用以下命令从perl脚本更改它时:
$update_result = $users->update_one(
{ 'userid' => $doc->{'userid'}},
{ '$set' => { 'emails.[0].email.active' => false }},
{ 'upsert' => 1}
);
我得到了以下不期望的结果:
{
"userid": 1234
"username": "tester",
"password": "*****",
"fullname": "For Test Only",
"emails" :[
{ "active": false},
{ "email": "test2@mail.com", "active": true }
]
}
电子邮件消失!! 。知道为什么不保留电子邮件吗?
谢谢。
答案 0 :(得分:0)
你不需要额外的if /?
:
email.