复杂的二级索引操作

时间:2017-07-13 21:34:11

标签: rethinkdb rethinkdb-javascript

我可以为这个表创建一个二级索引:

{
  contact: [
    'example@example.com'
  ]
}

像这样:indexCreate('contact', {multi: true})

但是我可以为此创建索引:

{
  contact: [
    {
      type: 'email',
      main: true
      value: 'andros705@gmail.com'
    }
    {
      type: 'phone'
      value: '0735521632'
    }
  ]
}

辅助索引只会搜索类型为“email”且main设置为“true”的对象

1 个答案:

答案 0 :(得分:1)

以下是您可以创建此类索引的方法:

table.indexCreate(
  'email',
  row => row('contact').filter({type: 'email'})('value'),
  {multi: true})

这可以通过使用多索引来实现。当multi: true参数传递给indexCreate时,索引函数应返回一个数组而不是一个值。该数组中的每个元素都可用于在索引中查找文档(使用getAllbetween)。如果数组为空,则文档不会显示在索引中。