mLab REST API - Запрос по строке - PullRequest
0 голосов
/ 06 февраля 2019

Я недавно создал новую базу данных / коллекцию с простым документом Json на mLab.Я включил 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"
        }
    ]
}

Мне бы хотелось найти документ со строкойэто вернуло бы любой объект из массива, который имеет значение, которое включает эту строку.Например, поиск «поддельного», который вернул бы первый, второй и четвертый объект со следующим URL:

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

Похоже, что API данных mLab только обрабатывает запросы ("q =") с использованием нотации jsonи даже зная, что я до сих пор не могу понять, как вернуть что-либо, кроме пустого массива или

"Не удалось проанализировать параметр JSON, перепроверьте синтаксис и кодировку"

ошибка.

Спасибо за любую помощь, которую вы, ребята, можете предложить!

Обновление Я вставил каждый объект песни как отдельный документ, а не как один большой документ, и могу фильтроватьони используют определенные запросы ... все еще не уверены, как реализовать более универсальное решение для фильтрации результатов со значениями, которые включают / содержат запрос.

Для тех, кто ищет помощь в вопросах, связанных с mlab, я бы предложил обратиться кк их очень полезной команде поддержки.

Окончательное обновление Я понял, как использовать регулярные выражения для фильтрации моих результатов.все:

{$regex: '(?i).*<string>.*'}

1 Ответ

0 голосов
/ 12 февраля 2019

если используется API данных mlab, используйте регулярное выражение для фильтрации результатов:

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

опция i отключает чувствительность к регистру.

...