当前位置: 首页 > news >正文

gorm+mysql查询/修改json列相关操作汇总

目录

具体操作

1,查询JSON段落指定key的值是否有等于value的 或 指定key=value的数据记录

2,查询JSON段落中price>19的记录

3,查询JSON段中key为k0的记录

4、JSON段落中提取指定键值对到指定结构 

5,查询JSON数组是否包含某元素

6,修改JSON段中指定key的值

相关结构体及基础数据


具体操作

1,查询JSON段落指定key的值是否有等于value的 或 指定key=value的数据记录

查询ids列中k1=val1的记录

var demo1 []Demo
err = conn.Model(&Demo{}).Where("ids->>'$.k1' = ?", "val1").Find(&demo1).Error 

查询books列中price=19.1的记录

var demo1 []Demo
err = conn.Model(&Demo{}).Where("JSON_EXTRACT(`books`,'$.price')=?", 19.1).Find(&demo1).Error

2,查询JSON段落中price>19的记录

var demo1 []Demo
err = conn.Model(&Demo{}).Where("books->'$.price' > 19 ").Find(&demo1).Error

等价于:

SELECT * FROM `demos` WHERE  books->>'$.price' >= 19;

3,查询JSON段中key为k0的记录

var demo1 []Demo
err = conn.Model(&Demo{}).Where("JSON_EXTRACT(ids, '$.k0')").Find(&demo1).Error

4、JSON段落中提取指定键值对到指定结构 

var demo2 []Book
err = conn.Model(&Demo{}).Select("books->>'$.name' AS name").Find(&demo2).Error
// 注意:在非数组的JSON中可正常获取,若是数组型JSON则拿不到数据都是零值。

提取多个键值对(多个字段):

err = conn.Model(&Demo{}).Select("books->>'$.name' AS name", "books->>'$.price' AS price").Find(&demo2).Error

5,查询JSON数组是否包含某元素

查询ids列的JSON数组中包含a0的记录

var demo1 []Demo
err = conn.Model(&Demo{}).Where("JSON_CONTAINS(ids, JSON_ARRAY(?))", "a0").Find(&demo1).Error

等价于

SELECT * FROM `demos` WHERE JSON_CONTAINS(`ids`, JSON_ARRAY('a0') ) AND `demos`.`deleted_at` IS null;

6,修改JSON段中指定key的值

将id=1的ids列中key为k0的值修改为v00

err = conn.Model(&Demo{}).Where("id=?", 1).Update("ids", gorm.Expr("JSON_REPLACE(ids, '$.k0', ?)", "v00")).Error // JSON_SET也可

值得注意的是,这种修改操作不能作用于JSON数组中元素的修改,JSON数组中元素的修改需要用到'$[0].k0',即表示数组第一个位置的元素的k0的值。

相关结构体及基础数据

type Demo struct {entity.ModelIDs   string `json:"ids"  gorm:"column:ids; type:JSON;"`Books string `json:"books"  gorm:"column:books; type:JSON;"`
}type Book struct {Name  string  `json:"name" gorm:"column:name;type:varchar(20); not null;"`Price float64 `json:"price" gorm:"column:price;type:decimal(10,2); not null; default:0.00;"`
}demos := []Demo{Demo{IDs:   "{\"k0\":\"val0\"}",Books: "{\"name\":\"西游记\",\"price\": 19.0}",},Demo{IDs:   "{\"k1\":\"val1\",\"k0\":\"val2\"}",Books: "{\"name\":\"三国演义\",\"price\": 19.1}",},Demo{IDs:   `["a0","a1","a2"]`,Books: "[{\"name\":\"西游记\",\"price\": 19.0},{\"name\":\"三国演义\",\"price\": 19.1}]",},}err = conn.Create(demos).Error

相关文章:

gorm+mysql查询/修改json列相关操作汇总

目录 具体操作 1,查询JSON段落指定key的值是否有等于value的 或 指定keyvalue的数据记录 2,查询JSON段落中price>19的记录 3,查询JSON段中key为k0的记录 4、JSON段落中提取指定键值对到指定结构 5,查询JSON数组是否包含…...

CMake-Cookbook 第0章 配置环境

文章目录 第0章 配置环境0.1 获取代码0.2 Docker镜像0.3 安装必要的软件0.3.1 获取CMake0.3.2 编译器0.3.3 自动化构建工具0.3.4 Python0.3.5 依赖软件0.3.5.1 BLAS和LAPACk0.3.5.2 消息传递接口(MPI)0.3.5.3 线性代数模板库0.3.5.4 Boost库0.3.5.5 交叉编译器0.3.5.6 ZeroMQ, …...

优质硬盘检测工具SMART Utility,保障您的Mac数据安全

在日常使用Mac电脑的过程中,我们经常会存储大量的重要数据,如照片、文档、视频等。然而,硬盘故障却是一件令人头疼的事情,可能会导致数据丢失、系统崩溃等严重后果。为了保障您的数据安全,我们推荐一款专业的硬盘检测工…...

Spring: alibaba代码规范校验工具checkstyle

文章目录 一、idea配置checkstyle插件二、激活CheckStyle三、配置自动格式化功能四、使用代码格式化 一、idea配置checkstyle插件 下载 Intellij IDEA Checkstyle 插件:File -> setting -> plugin通过关键字CheckStyle-IDEA搜索并安装。 安裝完成后重启idea…...

c++线程thread示例

本文章记录c创建线程&#xff0c;启动线程和结束线程的代码。 需要注意&#xff0c;编译时需要添加-lpthread依赖。 代码&#xff1a; ThreadTest.h #ifndef TEST_THREAD_TEST_H #define TEST_THREAD_TEST_H#include <thread> #include <mutex>class ThreadTes…...

Compose | UI组件(十一) | Spacer - 留白

文章目录 前言Spacer组件的参数说明Spacer组件的使用 总结 前言 Spacer组件是让两组件之间留有空白间隔 Spacer组件的参数说明 Spacer只有一个修饰符&#xff0c;修饰留空白的大小和比例&#xff0c;颜色 Spacer(modifier: Modifier)Spacer组件的使用 Row {Box(modifier M…...

PyTorch的nn.Module类的详细介绍

在PyTorch中&#xff0c;nn.Module 类是构建神经网络模型的基础类&#xff0c;所有自定义的层、模块或整个神经网络架构都需要继承自这个类。nn.Module 类提供了一系列属性和方法用于管理网络的结构和训练过程中的计算。 1. PyTorch中nn.Module基类的定义 在PyTorch中&#xff…...

python使用activemq库ActiveMQClient类的连接activemq并订阅、发送和接收消息

引入activemq模块&#xff1a;from activemq import ActiveMQClient from activemq import ActiveMQClient 是一个Python的导入语句&#xff0c;它从activemq模块中导入了ActiveMQClient类。 解释一下各个部分&#xff1a; from activemq: 这表示我们正在从一个名为activemq…...

【Flutter 面试题】Dart是什么?Dart和Flutter有什么关系?

【Flutter 面试题】Dart是什么&#xff1f;Dart和Flutter有什么关系&#xff1f; 文章目录 写在前面Dart是什么Dart和Flutter有什么关系&#xff1f; 写在前面 &#x1f44f;&#x1f3fb; 正在学 Flutter 的同学&#xff0c;你好&#xff01; &#x1f60a; 本专栏是解决 Fl…...

前后台分离跨域交互

后台处理跨域 安装插件 >: pip install django-cors-headers插件参考地址&#xff1a;https://github.com/ottoyiu/django-cors-headers/项目配置&#xff1a;dev.py # 注册app INSTALLED_APPS [...corsheaders, ]# 添加中间件 MIDDLEWARE [...corsheaders.middleware.…...

React16源码: React中处理LegacyContext相关的源码实现

LegacyContext 老的 contextAPI 也就是我们使用 childContextTypes 这种声明方式来从父节点为它的子树提供 context 内容的这么一种方式遗留的contextAPI 在 react 17 被彻底移除了&#xff0c;就无法使用了那么为什么要彻底移除这个contextAPI的使用方式呢&#xff1f;因为它…...

Boost.Test资源及示例

Note&#xff1a;boost_1_84_0的动态连接库资源链接 1.代码组织如下图&#xff1a; 2.包括程序入口的代码文件 示例&#xff1a; // M24.01.MyTestModule.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #define BOOST_TEST_MODULE MYTESTMODULE #def…...

数据结构二叉树

二叉树是数据结构中的一个基本概念&#xff0c;它是每个节点最多有两个子节点的树结构。在二叉树中&#xff0c;每个节点通常有两个指针&#xff0c;分别指向左子节点和右子节点。 数据结构定义 在二叉树的节点中&#xff0c;通常包含以下信息&#xff1a; 数据域&#xff1…...

JavaScript继承与原型链

继承和原型链是什么&#xff1f; 1.1 在继承中&#xff0c;子类继承父类的特征和行为&#xff0c;使得子类对象具有父类的实例域和方法。这意味着子类可以使用父类的方法和属性&#xff0c;使用继承的目的是为了更好设置实例的公共属性和方法&#xff0c;如下例子&#xff1a; …...

SouthLeetCode-打卡24年01月第4周

SouthLeetCode-打卡24年01月第4周 // Date : 2024/01/22 ~ 2024/01/28 022.设计链表 - 双链表 (1) 题目描述 022#LeetCode.707.#北岸计划2024/01/22 (2) 题解代码 import java.util.List;class ListNode {int val;ListNode prev;ListNode next;ListNode(){this.val 0;th…...

Linux——磁盘和文件系统(一)

Linux——磁盘和文件系统 磁盘机械式磁盘固态硬盘 机械式磁盘结构磁盘&#xff0c;磁道&#xff0c;扇区柱面 文件系统的初始化划卷&#xff08;划盘&#xff09; 挂载C盘放了什么东西Boot Block&#xff08;启动模块&#xff09; 0号组放了什么东西Super Block&#xff08;超级…...

EasyCVR视频智能监管系统方案设计与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…...

Ubuntu搭建国标平台wvp-GB28181-pro

目录 简介安装和编译1.查看操作系统信息2.安装最新版的nodejs3.安装java环境4.安装mysql5.安装redis6.安装编译器7.安装cmake8.安装依赖库9.编译ZLMediaKit9.1.编译结果说明 10.编译wvp-GB28181-pro10.1.编译结果说明 配置1.WVP-PRO配置文件1.1.Mysql数据库配置1.2.REDIS数据库…...

LC 2808. 使循环数组所有元素相等的最少秒数

2808. 使循环数组所有元素相等的最少秒数 难度: 中等 题目大意&#xff1a; 给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒&#xff0c;你可以对数组执行以下操作&#xff1a; 对于范围在 [0, n - 1] 内的每一个下标 i &#xff0c;将 nums[i] 替换成 nums[i] &…...

Qt|大小端数据转换

后面打算写Qt关于网络编程的博客&#xff0c;网络编程就绕不开字节流数据传输&#xff0c;字节流数据的传输一般是根据协议来定义对应的报文该如何组包&#xff0c;那这就必然牵扯到了大端字节序和小端字节序的问题了。不清楚的大小端的可以看一下相关资料&#xff1a;大小端模…...

Wiki.js日志系统终极指南:从记录到安全监控的全面解析

Wiki.js日志系统终极指南&#xff1a;从记录到安全监控的全面解析 【免费下载链接】wiki- Wiki.js | A modern and powerful wiki app built on Node.js 项目地址: https://gitcode.com/GitHub_Trending/wiki78/wiki- 当您的团队在Wiki.js中协作编辑文档时&#xff0c;是…...

KART-RERANK与MySQL集成:构建企业级智能搜索系统

KART-RERANK与MySQL集成&#xff1a;构建企业级智能搜索系统 你是不是也遇到过这样的问题&#xff1f;自家电商平台或者内容社区里&#xff0c;用户搜“适合夏天穿的轻薄外套”&#xff0c;结果系统返回一堆“冬季加厚羽绒服”或者“春秋季夹克”。用户抱怨搜不准&#xff0c;…...

Codeforces Round 1082 (Div. 2)2202

Submission #368219050 - Codeforces A. Parkour Design 思路&#xff1a;第一个操作第三个操作两步第二个操作&#xff0c;所以实际上只需要考虑y坐标的变化&#xff0c;然后看一下x的差值是否能整除3就可以了 B. ABAB Construction 思路&#xff1a;奇数长度开头一定是a或者…...

3秒守护隐私:Boss-Key重新定义窗口智能管理

3秒守护隐私&#xff1a;Boss-Key重新定义窗口智能管理 【免费下载链接】Boss-Key 老板来了&#xff1f;快用Boss-Key老板键一键隐藏静音当前窗口&#xff01;上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办公环境中&#xff0c;窗…...

Wan2.1 VAE网络安全应用:生成对抗性样本以测试图像识别系统鲁棒性

Wan2.1 VAE网络安全应用&#xff1a;生成对抗性样本以测试图像识别系统鲁棒性 1. 引言 想象一下&#xff0c;你公司新部署了一套人脸识别门禁系统&#xff0c;号称准确率高达99.9%。但某天&#xff0c;一个员工只是戴了一副造型奇特的眼镜&#xff0c;系统就把他识别成了另一…...

Kook Zimage 真实幻想 Turbo 与ChatGPT结合:智能图像生成方案

Kook Zimage 真实幻想 Turbo 与ChatGPT结合&#xff1a;智能图像生成方案 1. 引言 你有没有遇到过这样的情况&#xff1a;脑子里有一个很棒的创意画面&#xff0c;但就是不知道该怎么用文字描述出来&#xff1f;或者写了一大段描述词&#xff0c;生成的图片却总是不尽如人意&…...

【秣厉科技】LabVIEW工具包——OpenCV 实战:Mat 类在工业视觉中的高效数据流转

1. Mat类&#xff1a;工业视觉的数据高速公路 在工业视觉系统中&#xff0c;图像数据就像流水线上的零件&#xff0c;需要快速准确地传递到各个处理环节。OpenCV的Mat类就是这条流水线上的传送带&#xff0c;而LabVIEW则是控制整个生产线的智能大脑。我第一次在半导体检测项目…...

VideoCombine节点故障急救:6个非典型解决方案助你恢复视频合成功能

VideoCombine节点故障急救&#xff1a;6个非典型解决方案助你恢复视频合成功能 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 在视频创作的关键环节&#xff0c;…...

OWL ADVENTURE快速上手:10分钟完成本地部署与第一个识别Demo

OWL ADVENTURE快速上手&#xff1a;10分钟完成本地部署与第一个识别Demo 你是不是也对那些能看懂图片、能回答图片问题的AI模型感到好奇&#xff1f;OWL ADVENTURE就是这样一个模型&#xff0c;它能理解图片里的内容&#xff0c;然后和你聊天。听起来很酷&#xff0c;但会不会…...

一键体验OpenClaw:星图平台百川2-13B-4bits镜像快速部署方案

一键体验OpenClaw&#xff1a;星图平台百川2-13B-4bits镜像快速部署方案 1. 为什么选择星图平台体验OpenClaw 作为一个长期关注AI自动化工具的技术爱好者&#xff0c;我第一次接触OpenClaw时就被它的理念吸引了——一个能在本地电脑上像人类一样操作各种软件的AI助手。但当我…...