MongoDB创建一个包含2个集合数据的筛选集合

MongoDB创建一个包含2个集合数据的筛选集合,mongodb,filter,collections,Mongodb,Filter,Collections,我有一个mongo数据库,其中包含大量github数据(用户、问题、回购等)。 我想从这些大数据中创建小集合。 我根据“追随者”的用户数对“用户”集合进行排序。 然后我从这个查询中得到了前1000个用户 db.getCollection("users").find({}).sort({followers:-1}).limit(1000).forEach(function(doc){ db.usersnew.insert(doc);}); 还有另一个名为“repos”的集合,它包含关于用户存储库

我有一个mongo数据库,其中包含大量github数据(用户、问题、回购等)。 我想从这些大数据中创建小集合。 我根据“追随者”的用户数对“用户”集合进行排序。 然后我从这个查询中得到了前1000个用户

db.getCollection("users").find({}).sort({followers:-1}).limit(1000).forEach(function(doc){
db.usersnew.insert(doc);});
还有另一个名为“repos”的集合,它包含关于用户存储库的信息。(用户密钥字段:“owner.id”)

我想创建一个新的过滤回购集合,该集合只包含在usersnew集合中的用户

我尝试使用$look_up,但它像join一样工作

db.getCollection('reposnew').aggregate([{
$lookup:
    {
        from: "users",
        localField: "owner:id",
        foreignField : "id",
        as: "filteredRepo"
    }
}])
它在一个集合中创建用户集合+回购。
我只希望使用特定用户的数据筛选回购集合

你走对了方向,你只需要添加一个舞台


谢谢。我试过了,但没有效果。新集合为空。repos集合具有嵌套字段。owner是用户的字段类型。“owner:id”语法正确吗?我创建了一个包含2个集合的简单数据库来测试这段代码。有两个“_id”字段,它就可以工作了。但是,它不适用于嵌套字段(“id所有者:id”)。是的,这是一个输入错误,我已经修复了。我可以只从Filteredepo集合中选择一些字段吗?我将$project:{field1:1,field2:1}添加到项目中,但它不起作用。
db.getCollection('reposnew').aggregate([
    {
        $lookup:
        {
            from: "users",
            localField: "owner.id",
            foreignField : "id",
            as: "filteredRepo"
        }
    },
    {
        $match: {
            "filteredRepo.0": {$exists: true}
        }
    },
    {
        $project: {
            filteredRepo: 0
        }
    },
    {
        $out: "newCollectionName"
    }
])