Запрос базы данных космоса с массивом для фильтрации документов - PullRequest
0 голосов
/ 13 января 2020

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

1 Ответ

0 голосов
/ 13 января 2020

Вы можете просто использовать оператор In для запроса документов, как показано ниже:

Where c.Id in ("sdsd", "sdsds" )

SELECT * FROM c WHERE c.Id  in (listOfId )

Это работает.

Для сложного запроса вы можете использовать Array_Contains, который является встроенной функцией. Предположим, у вас есть документ, подобный приведенному ниже:

[
    {
        "videoGameId": "1",
        "videoGameName": "Battle Royale Kingdoms",
        "selectedLevels": [
            {
                "title": "Jungle Arena",
                "towers": 2,
                "towerPower": 40
            },
            {
                "title": "Legendary World",
                "towers": 5,
                "towerPower": 100
            }
        ]
    },
    {
        "videoGameId": "2",
        "videoGameName": "Fortnite vs Zombies",
        "selectedLevels": [
            {
                "title": "Rainbows after the storm",
                "maximumPlayers": 30,
                "minimumExperienceLevel": 60
            },
            {
                "title": "The last of us",
                "maximumPlayers": 10,
                "minimumExperienceLevel": 100
            }
        ]
    }
]

Два документа в коллекции VideoGames1 имеют ключ тегов с массивом строк с тегами, относящимися к видеоигре. Следующий запрос создаст новый документ для каждой видеоигры, который включает монстров в качестве одного из строковых значений ключа тегов. В запросе используется встроенная функция ARRAY_CONTAINS. Эта функция возвращает логическое значение, указывающее, содержит ли массив, полученный в качестве аргумента, указанное значение.

SELECT v.id AS videoGameId,
    v.name AS videoGameName,
    v.tags AS videoGameTags
FROM Videogames v
WHERE ARRAY_CONTAINS(v.tags, "monsters")

Аналогичным образом вы можете написать запрос для своей заявки c.

Дополнительная ссылка:

https://novacontext.com/writing-and-running-queries-on-nosql-document-databases/

Надеюсь, это поможет.

...