RethinkDB:​​.get()只是部分uuid?

时间:2016-05-14 22:43:03

标签: rethinkdb rethinkdb-javascript

让我们说这是我在RethinkDB中的一个文档的原因:594a64ab-b78b-4838-a79f-318020a352a9

通常,要检索文档,我会这样做:

r.db("databasename").table("tablename").get('594a64ab-b78b-4838-a79f-318020a352a9')

有没有什么方法可以用uuid的一些前缀部分来实现同样的目的?例如我想这样做:

r.db("databasename").table("tablename").getByPrefix('594a64ab-b78b')

这可能吗?

2 个答案:

答案 0 :(得分:2)

另一种解决方案,包括所有步骤:

1 /创建测试表

import requests
from bs4 import BeautifulSoup

def find_governor_races(html):
    url = html
    base_url = 'http://www.realclearpolitics.com/'
    page = requests.get(html).text
    soup = BeautifulSoup(page,'html.parser')  
    links = []
    for a in soup.findAll('a', href=True):
            links.append(a['href'])
find_governor_races('http://www.realclearpolitics.com/epolls/2010/governor/2010_elections_governor_map.html')

2 /列出表格内容

r.table('foo').insert([
  {foo: 1},
  {foo: 2},
  {foo: 3},
  {foo: 4},
  {foo: 5}
])

输出:

r.table('foo')

3 /创建二级索引

[
  {"foo":4,"id":"3c6873af-0dfc-41d3-99ad-894bab981635"},
  {"foo":1,"id":"302baaa5-1443-408c-bb58-7970e71129ac"},
  {"foo":2,"id":"ca5ff9c2-8079-4a19-9cfc-4e7b0a834555"},
  {"foo":5,"id":"aabb6c38-710a-444c-a4ae-b8ee14b5e802"},
  {"foo":3,"id":"4fc2e6e8-9434-4fa9-831b-4208bc82fd35"}
]

4 /列出索引内容

r.table('foo').indexCreate('id_prefix', function(d){
  return d('id').slice(0, 13)
})

输出:

r.table('foo').distinct({index:'id_prefix'})

5 /使用索引查找前缀为“4fc2e6e8-9434”的文档

["302baaa5-1443","3c6873af-0dfc","4fc2e6e8-9434","aabb6c38-710a","ca5ff9c2-8079"]

输出

r.table('foo').getAll("4fc2e6e8-9434", {index:'id_prefix'})

这是一个较长的设置和解决方案,但是,例如几百万个文档,它可以真正使它更快。

答案 1 :(得分:1)

你可以使用它,但它很慢:

r.db("databasename").table("tablename")
  .filter(r.row('id').match('^594a64ab-b78b')))