私はまだ成長している約500万のドキュメントを持つコレクションを持っています。これらの文書にはすべて、場所フィールドがあります。ロケーションフィールドにもインデックスがあります。これらの文書は地図上に表示されます。私がズームインしているときは、表示領域の境界内の点を限度で検索します。ズームアウトすると、x点を表示したいが、すべてを1つの領域に表示する必要はない(xは総コレクションよりもずっと小さい)。私はdbから20番目の要素ごとにリターンのようなものを実装したいので、高いズームレベルでの良い概観でなければならないすべての領域でポイントを取得します。私は今のようなものを持っていますが、それは機能しますが、それはすべてのアイテムを繰り返しているので、あまり速くはありません。mongodbカーソルからすべてのx番目の要素を取り出す効率的な方法
let itemCount = 0;
let someItems = [];
cursor.forEach((item) => {
if (!(++itemCount % 20)) someItems.push(item);
}, (err) => {
if (err) throw err;
res.json(someItems);
});
現在の実装では、ユーザーが私の意見で待機するには長すぎる5秒がかかります。カーソル項目をスキップする機能がありますか?私は、カーソルが使用するバッチについて読みました。 batchSizeが20の場合は、すべてのバッチの最初の項目を取ることができます。私は手動で次のバッチを取得する方法を見ていない。この操作の速度を向上させるにはどうすればよいでしょうか?
PS。私はNode.js MongoDBネイティブドライバを使用しています。
これは良い考えのようです。したがって、基本的には視認性に基づいてクエリを実行し、視認性が高いほどズームし、視認性が低い場合は、すべてを表示する最低のズームに達するまで視認性を下げます。 – Marco
これはいい考えです – hedgepigdaniel