RethinkDB:.get() 只包含部分 uuid?
RethinkDB: .get() with just part of the uuid?
假设这是我在 RethinkDB 中的一个文档的 uuid: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')
这可能吗?
你可以使用它,但速度很慢:
r.db("databasename").table("tablename")
.filter(r.row('id').match('^594a64ab-b78b')))
另一种解决方案,包括所有步骤:
1/ 创建测试table
r.table('foo').insert([
{foo: 1},
{foo: 2},
{foo: 3},
{foo: 4},
{foo: 5}
])
2/列表table内容
r.table('foo')
输出:
[
{"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"}
]
3/ 创建二级索引
r.table('foo').indexCreate('id_prefix', function(d){
return d('id').slice(0, 13)
})
4/ 列出索引内容
r.table('foo').distinct({index:'id_prefix'})
输出:
["302baaa5-1443","3c6873af-0dfc","4fc2e6e8-9434","aabb6c38-710a","ca5ff9c2-8079"]
5/ 使用索引查找前缀为“4fc2e6e8-9434”的文档
r.table('foo').getAll("4fc2e6e8-9434", {index:'id_prefix'})
输出
[{"foo":3,"id":"4fc2e6e8-9434-4fa9-831b-4208bc82fd35"}]
这是一个较长的设置和解决方案,但是,在 table 的例如数百万文档中,它确实可以使其更快。
假设这是我在 RethinkDB 中的一个文档的 uuid: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')
这可能吗?
你可以使用它,但速度很慢:
r.db("databasename").table("tablename")
.filter(r.row('id').match('^594a64ab-b78b')))
另一种解决方案,包括所有步骤:
1/ 创建测试table
r.table('foo').insert([
{foo: 1},
{foo: 2},
{foo: 3},
{foo: 4},
{foo: 5}
])
2/列表table内容
r.table('foo')
输出:
[
{"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"}
]
3/ 创建二级索引
r.table('foo').indexCreate('id_prefix', function(d){
return d('id').slice(0, 13)
})
4/ 列出索引内容
r.table('foo').distinct({index:'id_prefix'})
输出:
["302baaa5-1443","3c6873af-0dfc","4fc2e6e8-9434","aabb6c38-710a","ca5ff9c2-8079"]
5/ 使用索引查找前缀为“4fc2e6e8-9434”的文档
r.table('foo').getAll("4fc2e6e8-9434", {index:'id_prefix'})
输出
[{"foo":3,"id":"4fc2e6e8-9434-4fa9-831b-4208bc82fd35"}]
这是一个较长的设置和解决方案,但是,在 table 的例如数百万文档中,它确实可以使其更快。