面试题答案
一键面试$set运算符
- 适用场景:用于更新文档中的现有字段值,或者在文档不存在某个字段时创建新字段并赋值。例如,当用户信息发生变化,如年龄增长、地址变更等场景。
- 主要特点:能够修改已存在字段的值,同时也可以添加新字段。
$unset运算符
- 适用场景:用于从文档中删除指定的字段。比如,用户信息中的某个字段不再需要,如旧的联系方式等场景。
- 主要特点:专门用于删除字段,不能用于修改字段值。
示例代码
假设我们有一个名为users
的集合,其中文档结构如下:
{
"_id": ObjectId("64c1d3a76b98d25d8c3c9966"),
"name": "张三",
"age": 30,
"address": "北京市"
}
- 使用$set运算符:
- 更新现有字段:将用户年龄增加1
db.users.updateOne( { "name": "张三" }, { $set: { "age": 31 } } );
- 添加新字段:为用户添加电话号码字段
db.users.updateOne( { "name": "张三" }, { $set: { "phone": "13800138000" } } );
- 使用$unset运算符:删除用户的地址字段
db.users.updateOne(
{ "name": "张三" },
{ $unset: { "address": "" } }
);