Mysql 5.7相当于Mongos $ elemMatch

时间:2016-03-08 14:34:06

标签: mysql

有没有办法查询MySQL 5.7 JSON数据类型中的对象数组,它等同于Mongos $ elemMatch?

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

{
  fields: [
    {
      key: 'age',
      value: 20
    },
    {
      key: 'years_employed',
      value: 10
    }
  ]
}

在Mongo中,我可以使用

.find({fields: {$elemMatch: {key:'age', value:20}}})

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

.find({fields: {$elemMatch: {key:'age', value:10}}})

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

1 个答案:

答案 0 :(得分:1)

在名为MEDIUMINT的表中名为data的JSON列中给出以下JSON代码段,

data_table

您将使用JSON_CONTAINS函数(如以下SQL语句中所示)来选择与特定' age'

匹配的行
{
  fields: [
    {
      key: 'age',
      value: 20
    },
    {
      key: 'years_employed',
      value: 10
    }
  ]
}

我在MySQL 5.7.17上测试了这个