【问题标题】:mLab REST API - Query by stringmLab REST API - 按字符串查询
【发布时间】:2019-06-29 20:24:24
【问题描述】:

我最近在 mLab 上用一个简单的 Json 文档建立了一个新的数据库/集合。我启用了数据 API,并尝试通过查询参数过滤结果。很遗憾,完整的文档太大,无法在我的应用中托管。

文档如下所示:

{
    "_id": {
    "$oid": "5c59f496hv7ec06f4f560f4c"
    },
    "songs": [
        {
            "title": "title 1",
            "artist": "musician 1",
            "album": "fake album",
            "minsec": "2:04",
            "songid": "11100"
        },
        {
            "title": "fake title",
            "artist": "musician 1",
            "album": "album 2",
            "minsec": "2:57",
            "songid": "11102"
        },
        {
            "title": "title 3",
            "artist": "musician 2",
            "album": "album 3",
            "minsec": "3:06",
            "songid": "11078"
        },
        {
            "title": "title 4",
            "artist": "fake musician",
            "album": "album 4",
            "minsec": "2:28",
            "songid": "11103"
        }
    ]
}

我希望能够使用字符串搜索文档,该字符串将返回数组中具有包含该字符串的值的任何对象。例如,搜索 'fake' 将返回具有以下 url 的第一个、第二个和第四个对象:

https://api.mlab.com/api/1/databases/<my-db>/collections/<my-collection>?q=fake&apiKey=<my-apikey>

mLab 的数据 API 似乎只使用 json 表示法处理查询(“q =”),即使知道我仍然无法弄清楚如何返回空数组或

“无法解析 JSON 参数,请仔细检查语法和编码”

错误。

感谢你们提供的任何帮助!

更新我将每个歌曲对象作为单独的文档插入,而不是单个大文档,并且可以使用特定查询过滤它们...仍然不确定如何实现更通配符的解决方案使用包含/包含查询的值过滤结果。

对于任何在 mlab 相关问题上寻求帮助的人,我建议与他们非常有帮助的支持团队联系。

最终更新我想出了如何使用正则表达式来令人满意地过滤我的结果:

{$regex: '(?i).*&lt;string&gt;.*'}

【问题讨论】:

    标签: rest api mlab


    【解决方案1】:

    如果使用 mlab 数据 API,请使用正则表达式过滤结果:

    https://api.mlab.com/api/1/databases/&lt;my-db&gt;/collections/&lt;my-collection&gt;?apiKey=&lt;my-apikey&gt;&amp;q={'&lt;key&gt;':$regex:'(?i).*&lt;value&gt;.*'}

    i 选项关闭区分大小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2022-11-10
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      相关资源
      最近更新 更多