我最近在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>.*'}
答案 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选项关闭区分大小写的功能。