【发布时间】:2015-03-21 11:43:28
【问题描述】:
我正在使用 elixir-mongo 并尝试流式传输查询结果。这是代码...
def archive_stream(z) do
Stream.resource(
fn ->
{jobs, datetime} = z
lt = datetime_to_bson_utc datetime
c = jobs |> Mongo.Collection.find( %{updated_at: %{"$lt": lt}}) |> Mongo.Find.exec
{:cont, c.response.buffer, c}
end,
fn(z) ->
{j, {cont, therest, c}} = next(z)
case cont do
:cont -> {j, {cont, therest, c}}
:halt -> {:halt, {cont, therest, c}}
end
end,
fn(:halt, resp) -> resp end
)
结束
所有子位似乎都可以工作(如查询),但是当我尝试获取流时,我失败了......
Mdb.archive_stream({jobs, {{2013,11,1},{0,0,0}}})|>Enum.take(2)
我明白了……
(BadArityError) #Function 使用 1 个参数调用 arity 2 ({:cont, >, %Mongo.Cursor{batchSize: 0, 集合: %Mongo.Collection {db: %Mongo.Db{auth: {"admin", "edd5404c4f906060b125688e26ffb281"}, mongo: %Mongo.Server{host: 'db-stage.member0.mongolayer.com', id_prefix: 57602, mode: :passive,选择:%{},端口:27017,套接字:#Port,超时:6000},名称:“db-stage”,选择:%{模式::被动,超时:6000}},名称:“工作", opts: %{}}, 用尽: false, response: %Mongo.Response{buffer: >, cursorID: 3958284337526732701, 解码器: &Mongo.Response.bson_decode /1,nbdoc:101,requestID:67280413,startingFrom:0}}}) (长生不老药) lib/stream.ex:1020: Stream.do_resource/5 (长生不老药) lib/enum.ex:1731: Enum.take/2
我被难住了。有任何想法吗? 感谢您的帮助
【问题讨论】: