0

ドキュメントの制限されたサイズを照会するために動作する次のサンプルを参照してください。

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 したいのですが、何が欠けているのか説明してもらえますか? 前もって感謝します!

ところで: 現在の公式の erlang ドライバーはリファクタリング中です。使用している erlang ドライバーのバージョンは 0.2.1 です。

元の投稿はこちら

mongdb erlang ドライバーを使用して、クエリが間違った結果を返しますか?

4

2 に答える 2

0

構文をmongo:find/5確認すると、5 番目のパラメータはLimit ではなく「batchSize」のようです。

サーバーへの各リクエストでフェッチされるドキュメントのbatchSize数に影響しますが、返されるドキュメントの総数は制限されません。

実際に呼び出したいのは、Limit()次のようなカーソル上のものだと思います。

Cur = mongo:find (foo, {'$query', {}, '$orderby', {x,1}}, {'_id',0}).Limit(3)
于 2013-01-01T05:28:53.930 に答える
0

また、API に limit パラメータが見つかりませんでした。あなたが言及したのと同じ問題がありました。Counterしかし、到達した場合は単に結果を返すか、Limit結果がなくなった場合は結果を返すことで解決しました。

于 2014-11-03T03:05:54.067 に答える