mongodb特定查询,如加入

时间:2017-12-06 12:18:57

标签: mongodb aggregate

我是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?我之前在链接中试过了这个东西,却无法解决整个问题

1 个答案:

答案 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(例如,在注释删除提供注释的人之后可以使该部分未定义)此代码会抛出错误。我也会尝试修复这个错误。然后再次编辑该部分。