1

これが 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')

これは可能ですか?

4

2 に答える 2

2

すべての手順を含む別の解決策:

1/ テストテーブルを作成する

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

2/ テーブルの内容を一覧表示する

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"}]

これはより長いセットアップとソリューションですが、たとえば数百万のドキュメントのテーブルでは、実際に高速化できます。

于 2016-05-17T20:01:55.957 に答える
1

これを使用できますが、遅いです:

r.db("databasename").table("tablename")
  .filter(r.row('id').match('^594a64ab-b78b')))
于 2016-05-15T05:00:55.177 に答える