MongoDB Perl更新命令

时间:2017-10-11 10:45:48

标签: mongodb perl

我想在不丢失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 }
    ]
}

电子邮件消失!! 。知道为什么不保留电子邮件吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

你不需要额外的if /?

email.