template操作mongodb数据库(更新方法大全)

2023-05-16

本文是使用JAVA程序操作MongoDB数据库。里面提供了各种更新数据的方法,查询的各种方法会在后面进行更新。
本文只是提供了数据库更新操作的一些方法。
数据库数据和字段如下:
在这里插入图片描述
在这里插入图片描述
对于更新数据,我将更新数据的方法抽象出来成为单独一个方法,方法如下:

private int execUpdate(Query query, Update update,boolean isMany)
    {
        if (isMany)
        {
            WriteResult result = template.updateMulti(query, update, Blog.class);
            return result.getN();
        }

            WriteResult result = template.updateFirst(query, update, Blog.class);
            return result.getN();

    }

该方法可以更新一行或者多行的数据。
1.插入数据

    public int  insertBlog(Blog blog) {
        template.insert(blog);
        return 1;
    }

2.根据某列更新某列内容;

public int updateContentsForId(String id, String contents) {
        Query query=new Query();
        query.addCriteria(Criteria.where("_id").is(id));
        Update update=new Update();
        update.set("contents",contents);
        return this.execUpdate(query,update,false);

    }

3.添加一列,并给出那列的默认值。

public int addBstatus(String keyName, String defaultValue) {
        Update update=new Update();
        update.set(keyName,defaultValue);
        return this.execUpdate(null,update,true);
    }

4.给某个数组添加内容

public int addKeyword(String title, String keyword) {
        Query query=new Query();
        query.addCriteria(Criteria.where("title").is(title));
        Update update=new Update();
        update.addToSet("keywords",keyword);
        return this.execUpdate(query,update,false);
    }

5.添加某个嵌套子文档:

 public int addPdetail(String title, Pdetail pdetail) {
        Query query=new Query();
        query.addCriteria(Criteria.where("title").is(title));
        Update update=new Update();
        update.push("pdetails",pdetail);
        update.inc("pcount",1);
        return this.execUpdate(query,update,false);
    }

6.更新嵌套子文档中的内容

    public int updatePl(String title, String plid, String plcontent, Date pltime) {
        Query query=new Query();
        query.addCriteria(Criteria.where("title").is(title).and("pdetails.plid").is("2"));
        Update update=new Update();
        update.set("pdetails.$.plcontent",plcontent);
        update.set("pdetails.$.pltime",pltime);
        return this.execUpdate(query,update,false);
    }

7.删除数组中的第一行

    public int deleteFirstPl(String title) {
        Query query=new Query();
        query.addCriteria(Criteria.where("title").is(title));
        Update update=new Update();
        update.pop("pdetails",Update.Position.FIRST);
        return this.execUpdate(query,update,false);

    }

8.删除数组中的最后一行

 public int deleteLastPl(String title) {
        Query query=new Query();
        query.addCriteria(Criteria.where("title").is(title));
        Update update=new Update();
        update.pop("pdetails",Update.Position.LAST);
        return this.execUpdate(query,update,false);
    }

9.删除某个嵌套子文档的全部内容。

public int deleteAllPlAndClosePl(String title) {
        Query query=new Query();
        query.addCriteria(Criteria.where("title").is(title));
        Update update=new Update();
        Pdetail pdetail=new Pdetail();
        update.pull("pdetails",pdetail);//方法一
//        update.unset("pdetails");//方法二
        update.set("pstate",0);
        return this.execUpdate(query,update,true);
    }

10.删除集合

public void dropCollection() {
        template.dropCollection(Blog.class);

    }

11.删除数据库

public void dropDateBase() {
        template.getDb().dropDatabase();
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

template操作mongodb数据库(更新方法大全) 的相关文章

  • MongoDB $orderby 和 Sort 之间的区别

    我想获取最新的文档 这显然是一个文档 因此findOne应该可以正常工作 但findOne这里返回插入的第一个文档 所以我现在有两个选择要么使用 orderBy with findOne or use sort 功能与 limit in f
  • MongoDB 在仅返回 _id 时使用 COLLSCAN

    我想返回 MongoDB 集合中的所有 ID 我使用了以下代码 db coll find id 1 但MongoDB扫描整个集合而不是从默认读取信息index id 1 从日志中 find collection filter project
  • CoreMongooseArray 到普通数组

    我正在从一个架构中选出 2 个元素 并希望在另一个架构中进行更新 为此 我使用切片方法将数组中的前 2 个元素列入候选名单 但我越来越 CoreMongooseArray 元素1 元素2 而不是 元素1 元素2 如何删除 CoreMongo
  • 更新插入 MongoDB 时如何防止出现“_t”字段?

    我有一个应用程序 它使用 MongoDB 的 C 驱动程序将 Upsert 插入 MongoDB 数据库 当我打电话给Update函数 我无法指定我要更新的类型 然后 t字段插入元素的类型 这是我用来更新插入的代码 collection U
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • Strapi 未加载 Digital Ocean 上托管的现有 MongoDB 中的集合

    我正在使用 Strapi 创建一个新应用程序 并尝试将其与托管在 Digital Ocean 上的 MongoDB 连接 但不幸的是Strapi 无法从现有 MongoDB 获取集合 在这里 我提到我实现 Strapi 与现有 MongoD
  • 如何在 mongodb 聚合管道中使用 Javascript 对象?

    我有一个 JS 对象norm我想在 mongo 聚合管道中使用它 如下所示 var norm 1 1 2 1 16 3 1 413 4 1 622 5 1 6 6 1 753 7 3 001 8 2 818 9 3 291 10 2 824
  • ReferenceError:MongoDB shell 中未定义 require

    我尝试通过 Windows 命令 Windows 8 1 从 Mongo 客户端连接 MongoDB 当我使用require 在 javascript 中 我遇到如下错误 有人有同样的问题吗 我有错过任何一个吗require有关的npm安装
  • 按一个字段聚合,选择另一个字段最大值的文档作为集合

    使用聚合框架 获取每个分组的字段最大值的文档的最佳方法是什么 因此使用下面的集合 我希望具有为每个具有最新日期的 group id 返回一个文档的功能 第二个清单显示了所需的结果 group id date 1 11 1 12 1 11 2
  • C# Mongo DeleteMany - 不使用类

    我在 MongoDB 中有一个普通的 不是 GridFS 集合 我需要访问和删除一些文档 我想 需要在不使用类的情况下执行此操作 昨天 今天尝试了一些事情 并在网上进行了很多搜索并尝试了很多事情 无法弄清楚为什么 deletemany 对我
  • MongoDB 3.0 Windows 服务启动:发生系统错误 2

    我已经下载了 MongoDB Windows msi 安装并成功运行 mongod exe 和 mongo exe 命令文件执行工作正常 安装手册展示了如何创建配置文件 然后使用命令创建Windows Server sc exe creat
  • 通过 elemMatch 在 MongoDB 中排序

    MongoDB 有没有一种基于排序的方法 elemMatch 例如 我有如下所示的文档 user ObjectId fsdfsdf array of things attribute 1 ObjectId sdfsdfsd attribut
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • 在 Meteor 中运行示例的问题

    我正在测试 Meteor 示例 这是我运行时看到的meteor在待办事项示例中 Unexpected mongo exit code 100 Restarting Unexpected mongo exit code 100 Restart
  • 护照本地猫鼬帐户注册的附加字段?

    我将 Passport local mongoose 与 Node js Express js MongoDB 一起用于 Web 应用程序 我想使用用户名字段 密码字段 公司名称字段和电话号码字段 所有字段 来注册用户作为字符串 但是 我只
  • 将数组字段组合成单个数组字段 mongo

    我正在使用 mongo 版本 3 4 3 我的文档存储在 mongo 中 如下所示 id ObjectId 5ad5ab8aaf2808b739ba6ab2 ResumeId 105839064 ResumeDetails WorkProf
  • 在最新的 MongoDB java 驱动程序中使用 createIndex() 时,索引已存在并出现不同选项错误

    所以我将 MongoDB java 驱动程序升级到 2 12 4 其中ensureIndex 方法已被弃用 我改为使用createIndex 从文档来看 该方法的功能类似于ensureIndex 但是 当我在生产中使用此方法时 出现以下错误
  • 使用 KeystoneJs 的 Mongoose 二级种群 [重复]

    这个问题在这里已经有答案了 我需要用 Mongoose Keystone 填充两层 但遇到了障碍 我有 3 个模型 地区 国家和城市 地区包含国家 国家包含城市 我的模型 型号区域 var Region new keystone List
  • MongoDb 注册类映射

    我有以下代码 我希望 MiscellaneousData 覆盖抽象的 MiscellaneousDataBase 然而 IdMemberMap 总是出现空值 使用独立的 正常 类是可行的 if BsonClassMap IsClassMap
  • Mongod 错误(用自制程序安装)

    我已经安装了 mongodb brew install mongodb 已创建文件夹 mkdir p data db 处理权限 sudo chown R id un data db Run mongod 错误日志 2018 01 06T14

随机推荐

  • java使用ssl连接mysql

    Connecting Securely Using SSL 官方文档 xff0c 演示使用 上面文章里 Setting up Server Authentication 就是在客户端设置认证mysql服务器 xff0c Setting up
  • amd和arm安装ffmpeg踩坑报错处理

    一 amd安装ffmpeg yum安装 系统版本 xff1a CentOS Linux release 7 2 1511 Core 内核版本 xff1a 3 10 0 862 el7 x86 64 1 SMP Fri Apr 20 16 4
  • Powershell常用命令(一)

    Invoke Command xff08 icm xff09 功能 xff1a 在本地或者远程运行命令 xff0c 命令执行的结果 span class token punctuation span 含错误 span class token
  • Ubuntu 突然无法联网,ifconfig 查看仅回环IP时,ping 其他IP显示connect: Network is unreachable的解决方法

    场景 xff1a Ubuntu先前使用时可以联网 xff0c 本地私有ip也存在 xff0c 某次打开Ubuntu后 xff0c 用ifconfig查看IP仅本地的回环ip xff0c ping 别的ip显示connect Network
  • linux命令_复制文件/目录到指定目录下

    复制文件 xff1a 把1 txt 复制到根目录下的sbin目录 cp 43 文件名 xff08 可带路径 xff09 43 目标路径 xff08 带路径 xff09 如 xff1a cp 1 txt sbin 复制目录 xff1a 把re
  • 栈(一本通)

    第一类型 xff1a 车厢调度 进栈顺序是固定的1 2 3 4 xff0c 判断能不能按照给定的顺序出来 include lt iostream gt include lt cstring gt include lt cmath gt in
  • 一本通:1191流感传染

    一本通 xff1a 流感传染 题目描述 有一批易感人群住在网格状的宿舍区内 xff0c 宿舍区为n n的矩阵 xff0c 每个格点为一个房间 xff0c 房间里可能住人 xff0c 也可能空着 在第一天 xff0c 有些房间里的人得了流感
  • CentOS 7 使用iptables 开放端口

    转自 https www cnblogs com kyuang p 6307535 html CentOS 7 0默认使用的是firewall作为防火墙 xff0c 这里改为iptables防火墙 1 关闭firewall xff1a sy
  • 模拟幅度调制系统抗干扰性能仿真分析

    目录 1 引言2 系统模型和仿真1 DSB SC调制和解调1 调制过程2 解调过程3 信噪比分析4 matlab代码 2 AM调制和解调1 调制过程2 解调过程 xff1a 3 信噪比分析4 matlab代码 3 SSB调制和解调1 调制过
  • 解决重启后 /mnt/hgfs下共享文件夹挂载失效问题

    问题描述 xff1a 如题 xff0c 在 mn hgfs 下使用ls命令不显示共享文件夹 xff0c 在root权限下运行命令 xff1a vmhgfs fuse host mnt hgfs 后重新进入目录显示共享文件夹 xff0c 重启
  • Matlab安装硬件支持包补充@水月流荧

    您好 xff0c 请问我按照文章内容下载了支持包 xff0c 并且将archive拷贝到E matlab bin win64 xff08 本机位置 xff09 中 xff0c 后在win64中找到SupportSoftwareInstall
  • spring-boot-maven-plugin未指定版本导致的编译错误

    spring boot maven plugin未指定版本导致的编译错误 报错 springboot应用在使用maven编译时会报如下错误 xff1a Java Runtime class file version 61 0 this ve
  • ssh连接Centos7时vim无法使用粘贴板原因及解决方法

    原因 xff1a 1 命令行的vim没有 43 和 两个寄存器 xff08 原因之一 xff09 xff0c 退出vim后粘贴板内容不会保留到vim所在系统的粘贴板 2 在有 43 和 寄存器的前提下 xff0c 可以从vim复制到vim所
  • >Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

    gt Error com android tools aapt2 Aapt2Exception AAPT2 error check logs for details 这个错误会在3 0里面出现 解决办法是在gradle properties
  • 一键部署k8s脚本

    一键部署k8s脚本 目录 一键部署k8s脚本前情提示环境准备硬件系统要求角色说明 xff1a 其余准备工作 centos准备centos网络准备centos软件准备 部署k8s前配置下载部署脚本安装 Ansible 运行环境修改安装的配置文
  • Docker in docker 实现

    Docker in docker 文章目录 Docker in docker原理实现 xff08 centos7 xff09 常见问题参考 在docker容器内运行docker一般是不被倡导的 但有些场景和业务上 xff0c 需要在容器内使
  • 一篇文章入门spring

    Spring入门1 在之前我们对象的创建都是我们自己new出来的 xff0c 比如Student stu 61 new Student xff08 xff09 但是我们现在有了spring 我们将对象的创建的工作交给spring来处理 那么
  • JAVA数据结构之数组详细教程

    本文整理了java数据结构的数组操作 希望对刚入门数据结构的同志们有帮助 java数组非常简单 只要有JAVA语言基础就可以看这篇博文 大家不要害怕 非常简单 整理博客真的很花费时间 xff0c 如果对大家有帮助 xff0c 麻烦点赞评论
  • JAVA程序(MongoTemplate)操作mongodb数据库常用方法(超级详细)

    这里使用的是Spring 43 MongoTemplate来操作mongodb数据库 如果有不了解spring的同志先去了解一下spring为好 xff0c 这里给出实现的一些方法 主要有 xff1a 查询 增加 修改 删除 多字段增加 模
  • template操作mongodb数据库(更新方法大全)

    本文是使用JAVA程序操作MongoDB数据库 里面提供了各种更新数据的方法 xff0c 查询的各种方法会在后面进行更新 本文只是提供了数据库更新操作的一些方法 数据库数据和字段如下 xff1a 对于更新数据 xff0c 我将更新数据的方法