MST

星途 面试题库

面试题:MongoDB中常见更新运算符及应用场景

请列举至少3个MongoDB中的更新运算符,并分别说明它们适用于哪些数据更新场景,同时给出简单的应用实例。
13.5万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. $set
    • 适用场景:用于更新文档中的现有字段或添加新字段。如果字段不存在,它会创建新字段;如果字段已存在,则更新其值。
    • 应用实例:假设我们有一个集合students,文档结构为{name: "John", age: 20},要更新age字段并添加grade字段,可以这样操作:
    db.students.updateOne(
        {name: "John"},
        {$set: {age: 21, grade: "A"}}
    );
    
  2. $inc
    • 适用场景:专门用于对文档中的数值类型字段进行增加或减少操作。适用于需要在现有数值基础上进行增减的场景,比如计数器。
    • 应用实例:在students集合中,有一个文档{name: "Jane", score: 80},要给score字段增加10分:
    db.students.updateOne(
        {name: "Jane"},
        {$inc: {score: 10}}
    );
    
  3. $push
    • 适用场景:向文档中的数组类型字段添加一个或多个元素。如果数组字段不存在,它会创建一个新的数组字段。常用于需要向列表类型数据中添加元素的场景。
    • 应用实例:假设students集合中有文档{name: "Bob", hobbies: ["reading"]},要向hobbies数组中添加"swimming"
    db.students.updateOne(
        {name: "Bob"},
        {$push: {hobbies: "swimming"}}
    );
    
  4. $pull
    • 适用场景:从文档中的数组类型字段中删除一个或多个匹配的元素。适用于需要从列表类型数据中移除元素的场景。
    • 应用实例:还是在students集合中,文档{name: "Bob", hobbies: ["reading", "swimming"]},要移除"swimming"
    db.students.updateOne(
        {name: "Bob"},
        {$pull: {hobbies: "swimming"}}
    );
    
  5. $unset
    • 适用场景:用于删除文档中的字段。如果字段不存在,操作不会报错,但也不会有实际效果。适用于当某个字段不再需要时,将其从文档中移除。
    • 应用实例:在students集合中,文档{name: "Alice", age: 22, gender: "female"},要删除gender字段:
    db.students.updateOne(
        {name: "Alice"},
        {$unset: {gender: ""}}
    );