MST

星途 面试题库

面试题:MongoDB更新运算符在复杂文档结构中的应用

假设有一个文档结构如下:{ "name": "John", "hobbies": [ { "name": "reading", "books": [ { "title": "Book1" }, { "title": "Book2" } ] }, { "name": "traveling", "places": [ "City1", "City2" ] } ] } 。现在要将"reading"爱好中的第二本书的标题改为"NewBookTitle",请使用合适的MongoDB更新运算符实现此更新操作,并解释为什么选择这些运算符。
21.8万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 更新操作代码
    db.collection.updateOne(
        { "name": "John", "hobbies.name": "reading" },
        {
            "$set": {
                "hobbies.$.books.1.title": "NewBookTitle"
            }
        }
    );
    
  2. 运算符解释
    • $ 运算符
      • 作用:在更新操作中,$ 运算符用于定位数组中满足查询条件的第一个元素。在上述更新操作中,查询条件为 { "name": "John", "hobbies.name": "reading" }$ 会定位到 hobbies 数组中 namereading 的那个元素。这样我们就能对这个特定的爱好对象进行后续操作。
    • $set 运算符
      • 作用:$set 运算符用于更新文档中的字段值。在这里,我们使用 $set 将定位到的 hobbies 数组元素(也就是 reading 爱好对应的对象)中的 books 数组的第二个元素(索引为1)的 title 字段设置为 "NewBookTitle"。通过这种方式,我们可以精确地更新文档中特定位置的字段值。