Скажем, у меня есть таблица пользователей со свойством, называемым FavoriteUsers, которое представляет собой встроенный массив. то есть
пользователи
{
name:'bob'
favoriteUsers:['jim', 'tim'] //can you have an index on an embedded array?
}
user_presence
{
name:'jim', //index on name
online_since:14440000
}
Могу ли я выполнить внутреннее соединение или eqJoin против, скажем, второй таблицы, используя встроенное свойство, или мне придется вытащить FavoriteUsers из таблицы пользователей в таблицу соединений, как в традиционном sql?
r.table('users')
.getAll('bob', {index:'name'})
// inner join user_presence on user_presence.name in users.highlights
.eqJoin("name", r.table('user_presence'), {index:'name'})
В конце концов, я хотел бы вызвать change() для запроса, чтобы я мог получать обновления в реальном времени об изменениях присутствия любимых пользователей пользователей.
eqJoin
со встроенным документом, как в примере в самом низу rethinkdb.com/api/javascript/eq_join. Вы также можете использоватьgetAll
иconcatMap
и гораздо более мощную логику соединения. Это может дать тот же эффект, что иjoin
, несмотря на то, что имя не связано с соединением. - person kureikain   schedule 11.10.2015