MongoDB——插入和更新文档

448 阅读2分钟

「这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战」。

前言

大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要介绍MongoDB数据库的插入文档和更新文档的用法,以及一些注意事项。

1. 插入文档

db.collection.insert()db.collection.insertOne() 和 db.collection.insertMany()

db.collection.insertOne() 和 db.collection.insertMany()是3.2及之后版本新增的两个方法。而save()方法已经被废弃。

  1. db.collection.insertOne()

    【语法格式】

    db.collection.insertOne(
        {key:value},
        {
            writeConcern:1
        }
    )
    
  2. db.collection.insert()

    【语法格式】

    db.collection.insert(
        {key:value} 
    )
    
  3. db.collection.insertMany()

    [语法格式]

    db.collection.insertOne(
        [
            {key:value},
            {key:value},
            {key:value},
            ...         
        ]
        {
            writeConcern:1,
            ordered:true
        }
    )
    

参数解释:

  • writeConcern:默认为 1,确认写操作,0 是不要求。
  • ordered:是否按顺序写入,默认 为true,按顺序写入。

【实例展示】

db.articles.insert(
    {"name":"mongoDB intro"},
    {"category":"database"},
    {"tags":["nosql","db","bigdata"]}
)
db.articles.insertOne(
    {"name":"mongoDB intro"},
    {"category":"database"},
    {"tags":["nosql","db","bigdata"]}
)
db.potions.insertMany([
    {
        "name":"Invisibility",
        "vendor":"Kettlecooked",
        "price":10.99,
        "score":59,
        "tryDate":new Date(2022,02,26),
        "ingredients":["newt toes",42,"laughter"],
        "ratings":{"strength":2,"flavor":5}
    },
    {
        "name":"Love",
        "vendor":"Brewers",
        "price":3.99,
        "score":63,
        "tryDate":new Date(2022,03,26),
        "ingredients":["apple","orange","banana"],
        "ratings":{"strength":4,"flavor":6}
    },
    {
        "name":"Shrinking",
        "vendor":"Kettlecooked",
        "price":15.99,
        "score":50,
        "tryDate":new Date(2022,04,26),
        "ingredients":["watermelon",56,"grape"],
        "ratings":{"strength":7,"flavor":8}
    }
])

需要注意的是:insertMany()方法需要中括号,注意不要忘记。也可以通过insert()方法来插入多个文档,我们可以定义一个数组,把要插入的文档循环放入数组中,然后把数组插入到集合中。

2. 更新文档

  • db.collection.updateOne() 更新单个文档.

  • db.collection.updateMany() 更新多个文档.

  • db.collection.update()更新已存在的文档.

    【语法格式】

    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )
    

    参数解释:

    • query:更新的条件
    • update:要更新的字段和更新的方式
    • upsert:如果为true,则不存在则插入,如果为false则不插入,默认为false。此字段可选。
    • multi:如果为true则更新查询出来的全部记录,如果为false则只更新第一个,默认为false。此字段可选。
    • writeConcern:抛出异常的级别,此字段可选。
  • db.collection,save()通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入.

    【语法格式】

    db.collection.save(
       <document>,
       {
         writeConcern: <document>
       }
    )
    

【实例展示】

  1. 更新title为Martian的记录,把reviews字段的值增加3,userReviews的值增加25.
db.movieDetails.update(
  {"title":"Martian"},
  {$inc:{"reviews":3,"userReviews":25}}
)
  1. 更新title为Martian的第一个记录,把awards的值变为sss
db.movieDetails.updateOne(
  {"title":"Martian"},
  {$set:{"awards":"sss"}}
)
  1. 更新所有title为Martian的记录,把awards的值变为sss
db.movieDetails.updateOne(
  {"title":"Martian"},
  {$set:{"awards":"sss"}}
)
  1. 把title为Martian的将文档替换为如下格式。
db.movieDetails.save(
  {
  "title":"Martian""age":34  
  }  
)

补充一些常用操作符的用法:

  • $set 修改字段值(覆盖)
  • $uset 删除字段
  • $inc 给指定的字段增加或减少值
  • $rename 重命名
  • $setOnInsert 数据不存在则插入

小结

以上就是关于MongoDB数据库的插入文档和更新文档的一些用法,希望能对读者有所帮助,如有不正之处,欢迎留言指正。