mLab REST API-按字符串查询

时间:2019-02-05 22:47:17

标签: rest api mlab

我最近在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”将返回具有以下网址的第一个,第二个和第四个对象:

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).*<string>.*'}

1 个答案:

答案 0 :(得分:0)

如果使用mlab数据API,请使用regex过滤结果:

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

i选项关闭区分大小写的功能。