我正在开发一个 asp.net Web 应用程序,它应该为用户提供数千张 JPEG 图像。我的专用服务器包含 JPEG 文件并托管 MongoDB 来存储 JPEG 元数据。
Sample object in a collection named **JPEG_123** (this collection has 1 million such documents and each document has _id indexed)
{
"_id" : "20121210185015000", //YYYYMMDDhhmmsslll
"Url" : "http:...",
"CameraId" : 123
}
我正在使用 Web 方法来查询 MongoDB。我使用正则表达式(例如“^2012121018*/)查询集合JPEG_123的 Utc 字段以获取一个小时的文档。它返回 MongoCursor 指向的大约 5000 条记录,在 MongoShell 上它显示检索此数据的时间仅为 3-4 毫秒.
问:如何通过 MongoCursor 在 ASP.NET 中以最佳和快速的方式从 MongoDB 迭代获取这些文档?优化使用 LIMIT、BATCHSIZE 和 NEXT 类似 MongoCursor 的属性。
我正在尝试做这样的事情:
- 上面执行 Find Query on MongoDB from ASP.NET
- 最初仅通过网络获取前 500 个文档,并将其余 4500 个文档保留在 RAM 中
- 在 9 次后续迭代中获取该 MongoCursor 中的其余 4500 个文档(每次获取 500)
- 或任何其他加快通过网络发送此数据的过程的可能性
我的担忧
当我从 ASP.NET 查询 MongnoDB 时,这是否真的意味着 MongoDB 将所有 5000 条记录加载到 RAM 但不将所有 5000 条记录返回到 ASP.NET?
发出上述查询后,它立即返回 MongoCursor 指向的记录总数。当我遍历 MongoCursor 中的所有文档时,大约需要 20-30 秒。这是否意味着,MongoDB 在应用程序中使用时会返回数据?