Как получить документы, которые не содержат объект с определенным значением внутри массива
Например, у меня есть два документа:
{
communication: "some data 1"
users: [
{
name: 'Peter',
role: 'admin'
gender: 'male'
},
{
name: 'John',
role: 'guest'
gender: 'male'
}
]
}
{
communication: "some data 2"
users: [
{
name: 'Kollins',
role: 'admin'
gender: 'male'
},
{
name: 'Steve',
role: 'moderator'
gender: 'male'
}
]
}
Наконец, я должен получить документы, которые не имеют внутри users
массив user
с role: 'guest'
, На примере двух документов я должен получить второй. Псевдокод похож на:select * from bucket where users.role = 'guest' is missing
1 ответ
Решение
Вам необходимо сопоставить массив пользователей с ARRAY
и проверьте, есть ли пользователь с NOT EXISTS
SELECT * FROM bucket WHERE NOT EXISTS ARRAY users FOR user IN users
WHEN user.role='guest' END