MongoDB创建一个包含2个集合数据的筛选集合
我有一个mongo数据库,其中包含大量github数据(用户、问题、回购等)。 我想从这些大数据中创建小集合。 我根据“追随者”的用户数对“用户”集合进行排序。 然后我从这个查询中得到了前1000个用户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”的集合,它包含关于用户存储库
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"
}
])