Asp.net连接Mongodb查询时没有限制条数,造成数据量特别大

通过对比两种不同的MongoDB查询方式,发现使用Take与Limit的区别,优化了数据传输量,有效降低了服务器带宽压力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天连mongodb的服务器老是有问题,打开任务管理器一看,内网的带宽打的是相当的高,服务器上只有调mongodb的页面,调mongodb走的是内网,所以应该是mongodb传输的数据量太大的问题,因为当连接数只有30个左右的时候,mongostat里的netout居然仍然有4M、5M左右,这个也太夸张了,于是仔细排查了下项目的代码,终于找到了问题的症结。

修改前:

documnetFilterResult = collection.Find(filterDocument).Sort("Date", IndexOrder.Descending).Documents.Take(60).ToList<Document>();

修改后:

documnetFilterResult = collection.Find(filterDocument).Sort("Date", IndexOrder.Descending).Limit(60).Documents.ToList<Document>();

两者乍一看没什么区别,都是按照日期排好序然后取前60条,但是却有本质的区别:

修改前的代码查询mongodb的操作是collection.Find(filterDocument).Sort("Date", IndexOrder.Descending).Documents

修改后的代码查询mongodb的操作是collection.Find(filterDocument).Sort("Date", IndexOrder.Descending).Limit(60).Documents

可以看出,修改前的代码要比修改后的代码的查询结果要大的多(修改前是全部,修改是全部中的前60条),虽然修改前的最后也做了条数限制,但是是得到数据后再处理的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值