参考以下示例,它可用于查询文档的有限大小,
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.
但如果我确保索引为x:
db.foo.ensureIndex({x:1})
限制大小无法按预期工作,查询将返回所有匹配的文档。
我希望$ orderby带有限制大小的索引字段,你能帮我解释一下我想念的吗?提前谢谢!
BTW:当前的官方erlang驱动程序正在重构,我使用的是erlang驱动程序的版本是0.2.1原帖在这里
答案 0 :(得分:0)
查看syntax for mongo:find/5
,第五个参数似乎是"batchSize"而非限制。
batchSize
会影响每次向服务器发出请求时提取的文档数量,但不会限制将返回的文档总数。
我认为您实际想要调用的是光标上的Limit()
,类似于:
Cur = mongo:find (foo, {'$query', {}, '$orderby', {x,1}}, {'_id',0}).Limit(3)
答案 1 :(得分:0)
我也没有在api中找到限制参数。我和你提到的问题一样。
但是,如果Counter
到达Limit
,则只需返回结果即可解决,如果没有更多结果,则返回结果。