Query return wrong result using mongdb erlang driv

2019-03-02 22:08发布

问题:

When I tried

Query = {country, <<"US">>}, mongo:find(Col, { '$query', Query, '$orderby', {last_seen, -1} }, Projector, 0, 15),

The cursor returned is not limited to batch size 15 any more. It will return all the results in cursor. However, if I change it to

mongo:find(Col, Query, Projector, 0, 15),

It will return the cursor with 15 in size.

Is this a bug or I did anything wrong?

回答1:

It works for me on example below

run () ->
    application:start (mongodb),
    {ok, Conn} = mongo:connect (localhost),
    {ok, Docs} = mongo:do (safe, master, Conn, test, fun() ->
        mongo:delete (foo, {}),
        mongo:insert_all (foo, [{x,1}, {x,2}, {x,3}, {x,0}, {x,-1}]),
        Cur = mongo:find (foo, {'$query', {}, '$orderby', {x,1}}, {'_id',0}, 0, 3),
        mongo:rest (Cur) end),
    mongo:disconnect (Conn),
    [{x,-1}, {x,0}, {x,1}] = Docs.