У меня есть простой массив в документе в моем CosmosDB. Пример возврата SELECT * FROM c
:
[
{
"id": "v1234567",
"otherinfo": "othervalue",
"log": [
{
"ts": 1572786079799,
"e": "view1"
},
{
"ts": 1572781436024,
"e": "purchase"
},
{
"ts": 1572786079799,
"e": "view2"
},
{
"ts": 1572786082033,
"e": "view3"
},
{
"ts": 1572781436024,
"e": "purchase"
},
{
"ts": 1572786082033,
"e": "view4"
}
],
"_rid": "something",
"_self": "something",
"_etag": "\"something\"",
"_attachments": "attachments/",
"_ts": 1572786088
}
]
Я хочу достичь двух вещей, но не могу понять, как смотреть в массивы.
Returnпользователи (запись) где log[n].e = "purchase"
. Я думаю, что я достиг этого с помощью SELECT * from c WHERE ARRAY_CONTAINS(c.log, {"e": "atb"}, true)
Вернуть идентификатор пользователя, «otherinfo» и часть журнала после первого события e="purchase"
, найденного в журнале. (в данном случае view2, view3, покупка, view4).
Я использую проводник документов в портале Azure. Пробовал соединять запросы, которые мгновенно завершаются неудачей (потому что, вероятно, я ошибаюсь).