Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 使用排序和限制mongo执行批量查找查询_Performance_Mongodb - Fatal编程技术网

Performance 使用排序和限制mongo执行批量查找查询

Performance 使用排序和限制mongo执行批量查找查询,performance,mongodb,Performance,Mongodb,我有包含类别字段的文档,我想根据受欢迎程度、资历和受欢迎程度的上升,从每个类别中选出前10个文档。我计划在文档中使用投票字段来确定受欢迎程度,使用\u id字段来确定资历,使用votesPerDay字段来确定哪些受欢迎程度在上升。共有12个类别 典型文档如下所示 { name : 'alpaca', category : 'blue', votes : 500, _id : Object.Id, votesPerDay : 50 } { name : 'mu

我有包含类别字段的文档,我想根据受欢迎程度、资历和受欢迎程度的上升,从每个类别中选出前10个文档。我计划在文档中使用
投票
字段来确定受欢迎程度,使用
\u id
字段来确定资历,使用
votesPerDay
字段来确定哪些受欢迎程度在上升。共有12个类别

典型文档如下所示

{
   name : 'alpaca',
   category : 'blue',
   votes : 500,
   _id : Object.Id,
   votesPerDay : 50
}

{
   name : 'muon',
   category : 'green',
   votes : 100,
   _id : Object.Id,
   votesPerDay : 20
}
var myObj = {category1 : { 
   newest : [0,2....9],
   mostPopular : [0,2....9],
   risingInPopularity : [0,2....9]

} ..... with 12 of such objects};
我有一个需要存储所有类别的对象,在每个类别中,它将存储最流行的、最新的和受欢迎程度不断提高的类别。对象将每24小时刷新一次

每当我想查询mongo的所有12个不同类别时,我就会遇到麻烦

我曾尝试让for循环为每个类别运行三个查询,并在结果到达后存储结果,但这失败了,因为我似乎过载了mongo服务器,它崩溃了

我正在尝试构建的对象的体系结构将如下所示

{
   name : 'alpaca',
   category : 'blue',
   votes : 500,
   _id : Object.Id,
   votesPerDay : 50
}

{
   name : 'muon',
   category : 'green',
   votes : 100,
   _id : Object.Id,
   votesPerDay : 20
}
var myObj = {category1 : { 
   newest : [0,2....9],
   mostPopular : [0,2....9],
   risingInPopularity : [0,2....9]

} ..... with 12 of such objects};
我最初想到的执行查询的方式(尽管这样做我有点不舒服)是


因此,我的问题是如何最好地执行这种类型的大规模查询,在这种情况下,我需要根据类别获取文档,并仅检索投票最多的前10个文档,这些文档是最近添加的(基于
\u id
),并且每天有最多的
votesPerDay

批量操作用于更新或插入文档,而不是简单地发出查询。您的问题对于文档内容的外观以及实际需要执行的操作非常不清楚。示例文档和预期结果通常有助于澄清您提出的问题。我已尝试通过添加更多信息来澄清我的问题,希望现在可以理解。谢谢。这里还有很多问题。1.“12个类别”,所以忘记像“蓝色”和“绿色”这样的名字,为了这个问题,就叫它们1..12,或者至少弄清楚哪个字段被分组(我们假定为类别)。2.对象基本上有类别、投票、每天的投票。但基于什么?这些值是否已聚合?频率是多少?它们是真的还是只是被提议的?除最差的
ObjectId
值外,不包括任何日期。如何解决“最近添加”和“最流行”的问题?3.您的psuedocode无法解决任何问题。这看起来更像是一个提议。试着解释真正的问题。如果你还没有一个数据结构,那么考虑一下你需要收集什么才能得到结果。这里列出的不可能是你想要的“流行”、“最近”或“趋势”统计数据。老实说,所有这些信息都不重要,我只是想给出一些背景。我的问题归根结底是,如何在不重载mongo的情况下同时运行36个查询,检索总共360个文档。