Есть ли способ фильтрации по количеству вложенных элементов массива при использовании OData Query?
Я использую Microsoft Graph List CalendarView, чтобы получить события календаря из внешнего вида. Я хотел бы отфильтровать элементы, количество посетителей которых равно 0. (Логически это означает, что время для себя заблокировано).
Я понимаю, что есть параметр $ count, который будет возвращать количество элементов. Тем не менее, в ответе List CalendarView я не после количества элементов календаря, а количество посетителей в каждом элементе календаря. И на самом деле использовать не равный (ne) фильтр на его основе.
{
"value": [
{
"originalStartTimeZone": "originalStartTimeZone-value",
"originalEndTimeZone": "originalEndTimeZone-value",
"iCalUId": "iCalUId-value",
"reminderMinutesBeforeStart": 99,
"isReminderOn": true,
"attendees":[
{
"type":"required",
"status":{
"response":"none",
"time":"0001-01-01T00:00:00Z"
},
"emailAddress":{
"name":"Samantha Booth",
"address":"samanthab@a830edad905084922E17020313.onmicrosoft.com"
}
},
{
"type":"required",
"status":{
"response":"none",
"time":"0001-01-01T00:00:00Z"
},
"emailAddress":{
"name":"Dana Swope",
"address":"danas@a830edad905084922E17020313.onmicrosoft.com"
}
}
]
}
]
}
Я хочу специально отфильтровать любые элементы событий, где размер массива "участников" равен 0.
Возможно ли это с помощью параметров запроса OData?
0 ответов
Похоже, фильтрация против attendees
свойство не поддерживается, подробности см., например, в этой теме. Но можно рассмотреть следующий подход:
а) ввести расширенное свойство для event
ресурс, который будет предоставлять сводную информацию (флаг, будет ли событие содержать посетителей или количество посетителей) о attendees
,
Обновите все существующие события:
PATCH https://graph.microsoft.com/v1.0/me/events/{event-id}
Content-Type: application/json
{
"singleValueExtendedProperties": [
{
"id":"String {66f5a359-4659-4830-9070-00047ec6ac6e} Name ContainsAttendes",
"value":"1"
}
]
}
б) теперь события могут быть отфильтрованы так:
https://graph.microsoft.com/beta/me/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq 'String {66f5a359-4659-4830-9070-00047ec6ac6e} Name ContainsAttendes' and ep/value eq '1')
где предполагается ContainsAttendes=1
соответствует событиям, в которых участвует один или несколько участников