首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL5.7等效于Mongos $elemMatch

MySQL5.7等效于Mongos $elemMatch
EN

Stack Overflow用户
提问于 2016-03-08 14:34:06
回答 1查看 247关注 0票数 2

是否有一种方法来查询MySQL 5.7JSON数据类型中的对象数组,这相当于Mongos $elemMatch?

例如,如果将以下文档保存在MySQL JSON列中

代码语言:javascript
复制
{
  fields: [
    {
      key: 'age',
      value: 20
    },
    {
      key: 'years_employed',
      value: 10
    }
  ]
}

在蒙戈,我可以用

代码语言:javascript
复制
.find({fields: {$elemMatch: {key:'age', value:20}}})

这将返回包含字段数组的任何文档,该字段数组包含具有匹配键和值的参数的对象。以上内容将返回示例文档,但以下内容将不返回任何内容:

代码语言:javascript
复制
.find({fields: {$elemMatch: {key:'age', value:10}}})

我希望在MySQL 5.7中找到相同的功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-26 23:10:19

给定名为data的JSON列中的以下JSON片段,在名为data_table的表中,

代码语言:javascript
复制
{
  fields: [
    {
      key: 'age',
      value: 20
    },
    {
      key: 'years_employed',
      value: 10
    }
  ]
}

您将使用JSON_CONTAINS函数(如下面的SQL语句所示)来选择与特定“年龄”匹配的行。

代码语言:javascript
复制
SELECT * FROM `data_table` WHERE JSON_CONTAINS(`data`, '{"key":"age","value":20}', "$.fields")

我在MySQL 5.7.17上测试了这个

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35870140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档