Есть ли способ создать проекцию без явного перечисления свойств документа?
У меня есть одна коллекция для пользователей, одна для пользовательских календарей (пользователи: календари имеют отношение 1:1, но не у всех пользователей есть календарь):
users: {"name":"John","role":admin [more fields]}
calendars: {"color":"blue",owner: "users/john"}
Я должен вернуть документ с:
{"name":"John","role":admin,[all fields from the users collection],calendar:cal}
Есть ли способ сделать это, не перечисляя свойства из пользовательского документа?
for cal in zcalendar
for user in zuser filter user._id == cal.owner
return ...
1 ответ
Решение
Вы можете использовать функцию документа MERGE, например, так:
FOR cal IN zcalendar
FOR user IN zuser
FILTER user._id == cal.owner
LET calDoc = {
'calendar': cal
}
RETURN MERGE(user, calDoc)
Который возвращает эту структуру:
[
{
"_id": "...",
"_rev": "...",
"_key": "...",
"name": "John",
"role": "admin",
"calendar": {
"_id": "...",
"_rev": "...",
"_key": "...",
"color": "blue",
"owner": "..."
}
}
]