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 回答