cursor.min() を使用した mgo による MongoDB での効率的なページング
MongoDB のページング機能。通常は Query.Skip() と Query を使用して実装されます。 .Limit() は、ページ番号が増加すると遅くなる可能性があります。これに対処するために、MongoDB は、結果のリストを開始する最初のインデックス エントリを指定できる Cursor.min() を導入しました。
mgo.v2 の制限
残念ながら、 mgo.v2 ドライバーには、cursor.min() のサポートがありません。ただし、この機能は、Database.Run() メソッドを使用して、find コマンドなどの MongoDB コマンドを実行することで実現できます。
手動による効率的なページングの実装
github.com/icza/minquery の使用
minquery パッケージは、cursor.min を使用して検索コマンドを実行するプロセスを簡素化するラッパーを提供します。 () support.
q := minquery.New(session.DB(""), "users", bson.M{"country" : "USA"}). Sort("name", "_id").Limit(10) // If this is not the first page, set cursor: if cursor := getLastCursor(); cursor != "" { q = q.Cursor(cursor) } var users []*User newCursor, err := q.All(&users, "country", "name", "_id")
注: minquery.All() を使用する場合は、直接使用しない場合でも、結果をデコードするときにカーソル フィールドの名前を指定します。これは、後続のクエリのカーソル データを生成するために重要です。
以上がネイティブのcursor.min()サポートなしでmgo.v2を使用してMongoDBに効率的なページングを実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。