首页 > 其他分享 >gorm - datatypes.JSONQuery 多种 JSON 查询方式

gorm - datatypes.JSONQuery 多种 JSON 查询方式

时间:2025-01-19 22:53:46浏览次数:1  
标签:JSONQuery 查询 JSON User orgs datatypes gorm

一. 官方:https://github.com/go-gorm/datatypes

 

二. model

type User struct {
    Name                       `gorm:"column:name;type:varchar(255);`
    Attributes datatypes.JSON  `gorm:"column:attributes;type:json"`
}


// 数据内容
user := model.User{
    Name:   "jsonName",
    Attributes: datatypes.JSON({"name": "jinzhu", "age": 18, "tags": ["tag1", "tag2"], "orgs": {"orga": "orga1", "orgb": "orgb1", "orgac": "orgc1"}}),
}

 

三. 查询方式

3.1 查询 name=jinzhu

u := query.User
u.WithContext(ctx).Where(
    gen.Cond(datatypes.JSONQuery("attributes").Equals("jinzhu", "name"))...,
).Find()

 

3.2 多条件查询 orgs.orga=orga1,orgs.orgb=orgb1,orgs.orgc=orgc1

u := query.User
cond := u.WithContext(ctx).Clauses()

tagList := map[string]string{
    "orga": "orga1",
    "orgb": "orgb1",
    "orgc": "orgc1",
}
for k, v := range tagList {
    cond = cond.OR(gen.Cond(datatypes.JSONQuery("attributes").Equals(v, "orgs", fmt.Sprintf(`"%s"`, k)))...,)
}

u.WithContext(ctx).Where(cond).Find()

 

3.3 模糊搜索 tags: ["tag1", "tag2"],通过查询 "tag",获取包含 "tag1", "tag2" 的数据

u := query.User
t := "tag"
u.WithContext(ctx).Where(
    gen.Cond(datatypes.JSONQuery("attributes").Likes(fmt.Sprint("%"+t+"%"), "tags"))...
)

 

标签:JSONQuery,查询,JSON,User,orgs,datatypes,gorm
From: https://www.cnblogs.com/chaoqi/p/18680450

相关文章

  • spring +fastjson 的 rce
    前言众所周知,spring下是不可以上传jsp的木马来rce的,一般都是控制加载class或者jar包来rce的,我们的fastjson的高版本正好可以完成这些,这里来简单分析一手一、环境搭建<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s......
  • JSON.stringify有什么局限性和哪些技巧?
    JSON.stringify是JavaScript中用于将对象转换为JSON字符串的方法,但它在某些情况下具有局限性,同时也有一些技巧可以帮助开发者更有效地使用它。以下是关于JSON.stringify的局限性和技巧的详细解答:局限性:循环引用问题:当对象之间存在循环引用时,JSON.stringify会抛出错误。例如,一......
  • 使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级
    一、API的选择我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、查)。尤其对于我你们学习接口测试的初学开发者来说,它......
  • wordpress 从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新
    两种报错方式:1.此响应不是合法的JSON响应。2.从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页。情况:媒体服务器上传小文件没问题,大一点的文件报这个错误。原因:这是因为nginx限制了请求体大小方案:需要在nginx的虚拟机配置文件中添加:client_max_b......
  • Jsoncpp的安装与使用方式
    JsonCpp是一个C++库,用于解析和生成JSON数据。它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式。安装Jsoncpp我们可以输入以下命令安装jsoncpp库。sudoyuminstall-yjsoncpp-devel安装时默认安装动态库。头文件存储在/usr/include/jsoncpp/json中。......
  • Json 序列化,将对象序列化为Json字符串(此Json序列化,是“不安全的放松JSON转义”,即不会
    ///<summary>///Json序列化帮助类///</summary>publicclassJsonSerializerHelper{///<summary>///将对象序列化为Json字符串(此Json序列化,是“不安全的放松JSON转义”,即不会将物特殊符号和中文进行转码)///</summary>///<paramname="obj"></param>......
  • Go 重写JSON序列化和反序列化方法
    packagemainimport( "encoding/json" "fmt" "log" "strings")typeStructsstruct{ Namestring`json:"name"` Genderint`json:"gender"`}//MarshalJSON重写序列化方法,如果gender是0则改为woman,......
  • 判断字符串是否为json字符串方法
    要验证一个字符串是否为有效的JSON格式,可以使用JavaScript的JSON.parse()方法,并结合try...catch语句来捕获解析过程中可能出现的异常。以下是一个示例函数:functionisJSON(str){if(typeofstr==='string'){try{constobj=JSON.par......
  • vscode调试中launch.json文件配置
    {  //使用IntelliSense了解相关属性。  //悬停以查看现有属性的描述。  //欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387  "version":"0.2.0",  "configurations":[    {      "name":"(gdb)......
  • ExcelConvert【Excel转换为XML JSON HTML CSV TXT】
    ExcelConverter是用VB6开发的应用软件。界面如下 第一部分:转换为XML首先在Excel选择一部分数据。 软件里面勾选“首列作为元素名称”,单击“转换”勾选与不勾选,得到如下XML数据,注意对比。<root><金龙宇性别="男"年龄="29"民族="汉族"籍贯="上海"/><姚晨......