mongodb upsert操作是什么?如何用一条命令实现更新或插入?

 更新时间:2026年07月22日 09:45:41   作者:一起学python吧  
还在为处理数据时先查询再决定更新或插入而烦恼吗?本文详解MongoDB的upsert操作,只需一个参数即可实现原子性的更新或插入,避免竞态条件,让你的代码更高效、更简洁

upsert

是一种特殊的更新,如果没有找到符合条件的更新条件的文档,就会以这个条件和更新文档为基础创建一个新的文档;

如果找到了匹配的文档,就正常更新,upsert非常方便,不必预置集合,同一套代码既能用于创建文档又可以更新文档

其语法和更新的语法一样,只是在更新的基础上多加第三个参数-->true:如下:

语法:

db.stu.update({"_id": 3}, {用于更新的文档内容}, “这里就是要添加的第三个参数,是固定的!”)

例:

db.stu.update({"_id": 3}, {"$set": {"name": "wang"}}, true)

演示效果

如下:

所以这个方法适用于:

以更新条件为基础,如果查到对应数据,则将对应数据更新,如果查不到对应数据,那么则以更新条件新增一条数据!

优点

设想,如果我们对某种数据操作都是先查数据库,确定是否有对应文档,再决定更新还是插入,那么在多个进程同时操作同一段代码,或者多个进程/线程操作同一个条件时,就会遇到同时对给定条件插入多个文档这样的竞态条件, 

但是,使用upsert,既可以避免这种竞态问题,又可以减少代码量,并且这样会更高效,是原子性的

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 深入了解MongoDB是如何存储数据的

    深入了解MongoDB是如何存储数据的

    MongoDB是一个可扩展、高性能的分布式文档存储数据库,由C 语言编写,下面这篇文章主要给大家介绍了关于MongoDB是如何存储数据的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Spring Boot中使用MongoDB数据库的方法

    Spring Boot中使用MongoDB数据库的方法

    MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自“humongous”,是一种开源的文档数据库──NoSql数据库的一种。这篇文章主要介绍了Spring Boot中使用MongoDB数据库的方法,需要的朋友可以参考下
    2017-12-12
  • MongoDB 正则表达式查询之如何在 MongoDB 中实现模糊搜索与索引优化陷阱

    MongoDB 正则表达式查询之如何在 MongoDB 中实现模糊搜索与索引优化陷阱

    本文详细介绍了MongoDB正则表达式的基础、索引行为、性能优化、安全风险、替代方案以及最佳实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-02-02
  • 关于MongoTemplate通过id查询为null的问题

    关于MongoTemplate通过id查询为null的问题

    这篇文章主要介绍了关于MongoTemplate通过id查询为null的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 基于MongoDB实现文件的分布式存储

    基于MongoDB实现文件的分布式存储

    分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考下
    2025-05-05
  • MongoDB使用自带的命令行工具进行备份和恢复的教程

    MongoDB使用自带的命令行工具进行备份和恢复的教程

    这篇文章主要介绍了MongoDB使用自带的命令行工具进行备份和恢复的教程,我们只需要在命令行界面中用简单的命令操作mongorestore和mongodump工具就可以实现,需要的朋友可以参考下
    2016-06-06
  • Mongodb设置TTL索引自动清除数据与过期数据的方法

    Mongodb设置TTL索引自动清除数据与过期数据的方法

    今天小编就为大家分享一篇关于Mongodb设置TTL索引自动清除数据与过期数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • MongoDB 副本集的搭建过程

    MongoDB 副本集的搭建过程

    这篇文章主要介绍了MongoDB 副本集的搭建过程,帮助大家更好的理解和学习使用MongoDB数据库,感兴趣的朋友可以了解下
    2021-03-03
  • MongoDB入门教程之细说MongoDB数据库的增删查改操作

    MongoDB入门教程之细说MongoDB数据库的增删查改操作

    这篇文章主要介绍了MongoDB入门教程之细说MongoDB数据库的增删查改操作,本文环境是windows,所以以图片形式讲解,需要的朋友可以参考下
    2014-08-08
  • MongoDB监控分片集群的操作方法

    MongoDB监控分片集群的操作方法

    监控MongoDB分片集群是确保系统性能、稳定性和可扩展性的关键,下面给大家介绍MongoDB监控分片集群的操作方法,结合代码示例来展示如何实现监控,感兴趣的朋友跟随小编一起看看吧
    2026-03-03

最新评论