Я не совсем уверен, что вы имеете в виду (вы можете проверить этот вопрос SO для деталей о UNNEST
против ANY/SATISFIES
), но если вы хотите просто выбрать вложенные объекты проекта, где owner == 'alertNotification', вы можете использовать UNNEST
. У вас есть массив внутри массива, поэтому вам нужно дважды UNNEST
:
SELECT prj.*
FROM moviegame b
UNNEST b.accounts acct
UNNEST acct.projects prj
WHERE prj.owner == 'alertNotification';
Это вернет:
[
{
"email": "alertNotification@heman.com",
"id": "2",
"name": "abcdCompany alert notification",
"owner": "alertNotification"
}
]
Если вы НЕ хотите UNNEST, и вы просто хотите вернуть любой документ, который имеет учетную запись, у которой есть проект, у которого есть «владелец» «alertNotification», тогда вы можете использовать ANY/SATISFIES
(снова вложенный, потому что в массиве есть массив):
SELECT b.*
FROM moviegame b
WHERE ANY a IN accounts SATISFIES (ANY p IN a.projects SATISFIES p.owner == 'alertNotification' END) END
, который возвращает весь документ в вашем образце (ниже), но НЕ включает в себя другие документы, в которых НЕ содержится проект с владельцем == 'alertNotification':
[
{
"accounts": [
{
"email": "abcdCompany1234@heman.com",
"id": "123123",
"name": "abcdCompany",
"owner": "abcdCompany corporation",
"projects": [
{
"email": "assetMgmt@heman.com",
"id": "1",
"name": "abcdCompany asset management",
"owner": "assetMgmt"
},
{
"email": "alertNotification@heman.com",
"id": "2",
"name": "abcdCompany alert notification",
"owner": "alertNotification"
}
]
}
],
"docType": "account"
}
]