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