2

2 つのリクエストをスカッシュしたい:

a = r.table('A').run(conn)
b = r.table('B').run(conn)

一つで。何かのようなもの:

out = some_reql({
    'a': r.table('A'),
    'b': r.table('B')
}).run(conn)
out['a']
out['b']
4

1 に答える 1

1

単一のクエリで両方を取得したい場合は、unionそのように行うことができます

r.union(r.table("A"), r.table("B"))

これにより、2 つのストリームを連結した単一のストリーム オブジェクトが返されます。ただし、あるストリームがどこで終了し、次のストリームが開始するかはわかりません。現在、同じクエリで 2 つの個別のストリーム オブジェクトを返す方法はありません。したがって、それらを別々のストリームとして使用できるようにしたい場合は、2 つの別々のクエリを実行する必要があります。あなたにとってうまくいかない理由はありますか?


ストリームが大きい場合、各ストリームの結果を評価するには複数のリクエストが必要になるため、パフォーマンスに大きな影響はありません。ただし、それらが小さい場合は、次のように強制的に配列にすることができます。

{"a" : r.table("A").coerce_to("ARRAY"),
 "b" : r.table("B").coerce_to("ARRAY")}

これは、ストリームがメモリに収まる場合にのみ行ってください。

于 2013-10-21T23:40:02.353 に答える