Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
Mongodb 按其他集合的筛选器分组_Mongodb_Meteor_Aggregation Framework - Fatal编程技术网

Mongodb 按其他集合的筛选器分组

Mongodb 按其他集合的筛选器分组,mongodb,meteor,aggregation-framework,Mongodb,Meteor,Aggregation Framework,我正在使用流星和MongoDB。我需要使用聚合发布(我使用的是jcbernack:ReactiveAggregate和ReactiveAggregate) ]) 在客户端上,我只得到数据部分(限制6)。因此,我必须计算服务器端所有数据的数量。我不能使用find().count(),因为在没有聚合的find()调用中,我不能使用与其他集合关联的筛选器(如{'matches.score':{'gte':60})。我如何计算以这种方式过滤的数据?可能需要在管道中使用$group?您在问什么?如何获取什

我正在使用流星和MongoDB。我需要使用聚合发布(我使用的是jcbernack:ReactiveAggregateReactiveAggregate

])


在客户端上,我只得到数据部分(限制6)。因此,我必须计算服务器端所有数据的数量。我不能使用
find().count()
,因为在没有聚合的
find()
调用中,我不能使用与其他集合关联的筛选器(如
{'matches.score':{'gte':60}
)。我如何计算以这种方式过滤的数据?可能需要在管道中使用$group

您在问什么?如何获取什么的计数?如果您只需要计数,请使用
{“$group”:{“\u id”:null,“count”:{“$sum”:1}运行另一个聚合
$match
阶段之后,而不是在其他管道阶段之后。但是请不要在一个请求中尝试这样做。或者甚至要求这样做。Neil Lunn,我需要计算给定筛选器的作业数
{$match:{'matches.score':{'$gte':60}
。如果我使用
{$group:{id::null,“count':{$sum:1}
然后我得到所有不带过滤器的数据的计数。这是一个“管道阶段”。同样使用上述聚合管道,但不要使用
$sort、$limit
阶段,只需在
$match
之后,用我刚才给你的
$group
替换这些阶段。然后在应用
$lookup
$match
之后,你就可以计算文档了。因此
$lookup->$match->$match->$g然后,组应该是计数的新管道。哦,它真的很有效!我应该了解我自己。非常感谢!
db.getCollection('Jobs').aggregate([ 
{
  $lookup:
    {
      from: "JobMatches",
      localField: "_id",
      foreignField: "jobId",
      as: "matches"
    }
},
{ $project: 
  { 
    matches: { 
        '$filter': { 
            input: '$matches', 
            as: 'match', 
            cond: { '$and': [{$eq: ['$$match.userId', userId]}]}
        }
    }
   }
},
{$match:  { 'matches.score': { '$gte': 60 }},
{$sort: { "matches.score": -1 }},
{$limit: 6}