今天要理解的不是mongodb的更新操作,而是理解更新操作符,什么含义呢?主要用于更新文档中的field或array,特别的灵活,主要包含:
Field Update Operators
Array Update Operators
Bitwise Update Operators
本文主要理解field更新操作符中较常用的$set,它用于更新文档中的指定值(If the field does not exist, $set will add a new field with the specified value),如下:
{ $set: { <field1>: <value1>, ... } }
该文对于理解数组、内嵌文档、数组内嵌文档非常有意义,使用PHP进行演示。
$arr = [
"_id"=>100,
"sku"=>"abc123",
"quantity"=> 250,
"instock"=> true,
"reorder"=> false,
"details"=> [ model=> "14Q2", "make"=> "xyz" ],
"tags"=> [ "apparel", "clothing" ],
"ratings"=> [ [ "by"=>"a", "rating"=>4 ],[ "by"=>"c", "rating"=>5 ] ]
];
try {
$c->insertOne($arr);
} catch (\Exception $e) {
}
其中details是内嵌文档,tags是数组,ratings是数组(数组元素是一组对象)。
1:Set Top-Level Fields
$c->updateOne(['_id'=>100],['$set'=>[tags=>[ "a", "b", "c" ]]]);
更新顶层元素,本例是更新数组。
2:Set Fields in Embedded Documents
$c->updateOne(['_id'=>100],['$set'=>["details.make"=>"zzz" ]]);
用于更新内嵌文档的值。
3:Set Elements in Arrays
$c->updateOne(['_id'=>100],['$set'=>["tags.1"=>"hello","ratings.1.rating"=>2]]);
更新数组中的某个位置的元素,数组元素是一个内嵌文档。
参考:
https://docs.mongodb.com/manual/reference/operator/update/set
文章转载自虞大胆的叽叽喳喳,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




