将MongoDB 2.4与mongoDB .NET驱动程序3.2一起使用
我有一个拥有3000万条目的集合。
var visits = new MongoHelper<CampaignVisitLog>()
.GetCollection().AsQueryable().Count(t => t.campaignId == campaignId);
campaignId已编入索引。 根据很多条目,campaignId需要30秒到几分钟才能返回计数。
计算此系列的正确方法是什么?
答案 0 :(得分:1)
我有一个拥有3000万条目的集合。
无论是优化整个查询,您都不会认为您将获得数百万项快速反应。
如果您正在执行其他查询以获取统计信息,可能是时候安排此计算并使用某些异步服务(即 Windows服务, Windows计划任务, Quartz.NET ...),并以异步方式获得结果。
您可以使用MongoDB存储计算服务结果,也可以选择更具体的解决方案:服务总线(即 RabbitMQ , Azure Service Bus < / em>, NServiceBus ...)。
答案 1 :(得分:1)
MongoDB C#驱动程序病了。
LINQ查询始终转换为聚合框架管道。
var pipeline = [ { "$group" : { "_id" : 1, "__result" : { "$sum" : 1 } } }]
db.test.aggregate(pipeline)
这会导致服务器上的完整集合扫描,因为LINQ查询未指定任何约束。
答案 2 :(得分:0)
确保您有足够的内存来存储ram中的索引。
https://docs.mongodb.org/manual/tutorial/ensure-indexes-fit-ram/