2016-05-14 4 views
0

のは、これがRethinkDBの私のドキュメントの1つのUUIDであるとしましょう:594a64ab-b78b-4838-a79f-318020a352a9RethinkDB:​​uuidの一部だけを持つ.get()?

通常、ドキュメントを取得するために、私は:

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

は、私は同じことを達成することができますいくつかの方法がありますuuidの一部のプレフィックス部分のみを使用していますか?例えば私はこれをしたい:

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

これは可能ですか?

+0

@ kureikainの解決策は動作しますが、なぜクエリ作成時にUUIDの一部しか使用できませんか? – dalanmiller

+0

@dalanmiller私はuuidをURLパラメータとして使用したいが、本当に長いので、uuid全体ではない。 SQLの世界では、私は自動インクリメントされた整数を行うだけですが、もちろんその振る舞いに最適化されているわけではありません。思考? –

答えて

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

接頭辞を持つ文書を見つけるためにインデックスを使用しますしかし、例えば数百万のドキュメントのテーブル上で、それは実際にそれをより速くすることができます。

1

あなたは、使用、これを行うことができますが、それはしかし遅いです:すべてのステップを含む

r.db("databasename").table("tablename") 
    .filter(r.row('id').match('^594a64ab-b78b'))) 
関連する問題