Javascript 如何在Strongloop中使用正则表达式搜索mysql中的JSON数据

Javascript 如何在Strongloop中使用正则表达式搜索mysql中的JSON数据,javascript,regex,node.js,loopbackjs,strongloop,Javascript,Regex,Node.js,Loopbackjs,Strongloop,我已经在表中存储了JSON数据。我想基于userId获取数据,userId是Users对象的属性 示例:如果用户包含513,我希望获取所有记录 我的表格数据示例: Table name:share Id name sharedusers 1 xxxx {"accessType":0,"permission":"1","specificUsers": [{"users":"502,512,513","per

我已经在表中存储了JSON数据。我想基于userId获取数据,userId是Users对象的属性

示例:如果用户包含513,我希望获取所有记录

我的表格数据示例:

Table name:share

Id  name            sharedusers
1   xxxx            {"accessType":0,"permission":"1","specificUsers":
                    [{"users":"502,512,513","permission":"1"}]}

2   yyy             {"accessType":0,"permission":"1","specificUsers":
                    [{"users":"47,52,60","permission":"1"}]} 

3   zzzz            {"accessType":0,"permission":"1","specificUsers":
                    [{"users":"502,512,513","permission":"1"}]} 
我尝试在find()方法中执行以下查询,但不起作用 显示错误

在MySql中,我尝试了以下代码,它运行良好,但我不知道 如何在strongloop中执行相同的操作


Mysql版本:“5.6.27-log”

当数据类型为if object时,Strongloop在子字段中为您做了一些工作,这会导致一些与您的情况类似的反直觉查询(但当您习惯于MongoDB/Postgres查询样式时非常直观)

你应该使用

{"where": {"sharedusers.users": {"regexp": "[^\"]*[[:<:]]513[[:>:]]" }}}
您可以将数据库存储更改为将
用户
作为字符串数组:如果您使用支持JSON()的MySQL,速度会快得多,您可以执行以下操作:

{"where": {"sharedusers.users": "513" }}
那会快得多


编辑:在多次注释和问题更新后,我的答案无效,因为您正在为sharedusers字段使用字符串数据类型。

您应该知道,此查询可能不会太快。它几乎肯定需要表扫描,因此表中的行数是线性的。@ChrisKitching我接受您的评论,但我们只有有限的记录。我尝试了这个{“where”:{“sharedusers.users”:{“regexp”:“[^\”]*[::]“}}}}但我得到的数组是空的。这是因为您的正则表达式不匹配,请尝试
/(513,|,513,| 513$)/
我尝试了内存存储和mysql。mysql返回错误“未知列”。内存存储返回空数组。你能提供示例应用程序吗?你能在问题中添加你的模型定义和使用的mysql版本吗?这样我就可以在我身边尝试使用相同的数据类型,同时在第一个字段中看到你的
”用户“
而不是
“用户”
,可能是它吗?
{
  "name": "share",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string"
    },
    "sharedusers": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}
{"where": {"sharedusers.users": {"regexp": "[^\"]*[[:<:]]513[[:>:]]" }}}
{"where": {"sharedusers.users": "/(513,|,513,|513$)/" }}
{"where": {"sharedusers.users": "513" }}