【发布时间】: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).*<string>.*'}
【问题讨论】: