首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AJAX通过游标迭代检索5000个文档的MongoDB C#驱动程序

使用AJAX通过游标迭代检索5000个文档的MongoDB C#驱动程序
EN

Stack Overflow用户
提问于 2012-12-20 07:03:41
回答 1查看 1.2K关注 0票数 1

我正在开发一个asp.net网络应用程序,它应该为用户提供数以千计的JPEG图像。我的专用服务器包含JPEG文件,并托管一个MongoDB来存储JPEG元数据。

代码语言:javascript
复制
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*/”)查询Utc字段的集合JPEG_123,以获得一个小时的文档。它返回MongoCursor指出的大约5000条记录,在MongoShell上只显示3-4毫秒的时间来检索这些数据。

Q.如何迭代地从MongoDB获得这些文档--在ASP.NET中通过MongoCursor获得最好和快速的方式?优化使用极限、BATCHSIZE和NEXT相似属性的MongoCursor。

我试着做一些这样的事情:

  • 在MongoDB上从ASP.NET执行上述查找查询
  • 最初只通过网络获取前500个文档,然后将rest 4500保存在RAM中
  • 在随后的9个迭代中获取该MongoCursor中的rest 4500文档(每次获取500个)
  • 或者任何其他通过网络发送数据的可能。

My concerns

  1. 当我从MongnoDB查询ASP.NET时,这是否真的意味着MongoDB将所有5000条记录加载到RAM中,而不将所有5000条记录返回给ASP.NET?
  2. 发出上述查询后,它立即返回MongoCursor指出的记录总数。当我循环遍历MongoCursor中的所有文档时,大约需要20-30秒。这是否意味着,MongoDB在应用程序中使用时返回数据?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-20 20:51:14

我已经发现,使用大集合大小的游标非常缓慢,除非集合的索引非常好。您应该注意,在大多数情况下,Regex禁止使用索引,如果可能的话,您应该尽量避免使用这些索引。

默认情况下,游标每批返回101个文档或1MB数据。如果可以通过查看集合统计数据来确定平均文档的大小,则可以利用该数据设置最佳限制。还有一些设置可以在游标对象中播放,以帮助在某种程度上扩展这些限制。

我可能会建议的一件事,因为与读相比,写已经很慢了,那就是把那些UTC字符串作为日期字段传递给您,让Mongo为您解析这些字符串。这样,您既可以在查询中索引字段,也可以使用常规日期范围比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13966874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档