MST

星途 面试题库

面试题:MongoDB中$set和$unset运算符的使用场景及区别

请阐述在MongoDB里,$set和$unset更新运算符各自适用于哪些场景,并且说明它们之间的主要区别。同时,给出在一个包含用户信息(如姓名、年龄、地址等字段)的集合中,使用这两个运算符的具体示例代码。
43.9万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

$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": "" } }
);