暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

理解mongodb中的更新操作符(1)

187

今天要理解的不是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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论