我是nosql的新手,我需要一个像join这样的查询。我希望你能帮助我。 具有id名称的用户集合 包含id注释user_id
的Idea集合一个人可以有很多评论,我想达成 用户给出的评论 Idea.comment User.name是我想要的结果 我希望你能帮助我。
db.ProjectIdea.aggregate([
{
$lookup:{
from:"User",
localField:"createdUser",
foreignField:"_id",
as:"kim"
}
}
]).forEach(
function(u){
print(u.kim[0].name;
}
);
但是,有些用户没有定义名称属性,所以我发现错误 How do I perform the SQL Join equivalent in MongoDB?我之前在链接中试过了这个东西,却无法解决整个问题
答案 0 :(得分:0)
我找到了解决方案
db.ProjectIdea.aggregate([
{ "$match": { projectId:ObjectId("59e72193212ef231dc5c7d7d") } },
{
$lookup:{
from:"User",
localField:"createdUser",
foreignField:"_id",
as:"kim"
}
}
]).forEach(
function(u){
print(""+u._id+'|'+u.caption.replace("\r"," ").replace("\n","
")+'|'+u.idea.replace("\r"," ").replace("\n"," ")+'|'+u.kim[0].name+'
'+u.kim[0].lastName+"");
}
);
这里唯一的问题是,如果“kim”部分没有name和lastName(例如,在注释删除提供注释的人之后可以使该部分未定义)此代码会抛出错误。我也会尝试修复这个错误。然后再次编辑该部分。