【发布时间】:2019-04-24 06:49:48
【问题描述】:
我正在尝试根据学生 ID 在 MongoDB 中聚合 2 个集合。一个集合包含学生个人信息,另一个集合包含学生日志。问题是数据在数组中,这就是我认为我的聚合不起作用的原因。任何帮助将不胜感激。
学生收藏
{
"_id" : ObjectId("(Object ID here"),
"data" : [
{
"name" : "John",
"id" : 1
},
{
"name" : "Sandy",
"id" : 2
}
]
}
日志收集
{
"_id" : ObjectId("(Object ID here"),
"logs" : [
{
"studentId" : 1,
"activity" : "11112,334,123"
},
{
"studentId" : 2,
"activity" : "11112,334,123"
}
]
}
这是我尝试过的:
dbo.collection("student").aggregate([
{ "$lookup": {
"localField": "data.id",
"from": "logs",
"foreignField": "logs.studentId",
"as": "studentInfo"
}
}]).toArray(function(err, results) {
console.log(results);
});
预期结果:
studentinfo: {
id: 1,
name: "John",
activity" : "11112,334,123"
}
【问题讨论】:
-
你使用的是什么版本的mongodb?你想要什么输出?
-
有什么理由这样存储数据?通常每个学生都是自己的文件
-
@AnthonyWinzlet 我想获得学生日志和个人信息的联合结果
-
@Bajal true 但这是一个更大的应用程序的一部分,学生目前没有那么多信息
-
@HeelMega 你能粘贴给定输入的预期输出吗?
标签: arrays mongodb mongoose mongodb-query aggregation-framework