Mongodb聚合与多个键的连接

时间:2016-03-04 05:30:26

标签: mongodb-query

我正在使用聚合连接,如下所示:

 db.users.aggregate([{$lookup:
    {
        from: "userinfo",            
        localField: "userId",            
        foreignField: "userId",       
        as: "userres" }    
    }], function (err, info)
    {
        res.json(info);
    }
);

在上面的代码中,我可以为二次收集添加另一个条件吗? 如果可能,请告诉我。

2 个答案:

答案 0 :(得分:0)

不幸的是,$ lookup匹配仅在源和外部集合中使用一个字段。 如果你真的需要更复杂的WHERE子句 - 那么解决方案就是在两个集合中添加一个额外的计算字段,以便根据需要精确匹配查找。

答案 1 :(得分:0)

实际上我并不是想要匹配两个系列。我正在寻找与二次收藏相匹配的领域。我会清楚地解释我的问题:
                                                                                                  这是我的主要收藏品“bags”。其中包含

    {
    "_id" : ObjectId("568f43e08a9f71b70b22a694"),
            "bagNo" : "HBBN/00001/16",
            "category" : "Voluntary",
            "regNo" : "DNR/00001/16",
            "status": "Accepted"
    }, 

{ “_id”:ObjectId(“568f4645fa0758af0e3fef26”),         “bagNo”:“HBBN / 00002/16”,         “类别”:“自愿”,         “regNo”:“DNR / 00002/16”,         “状态”:“被拒绝” },

{ “_id”:ObjectId(“568f4645fa4546gygfef26”),         “bagNo”:“HBBN / 00003/16”,         “类别”:“自愿”,         “regNo”:“DNR / 00003/16”,         “身份”:“接受” }

现在我的加入集合“捐赠者”包含

    {"donorType" : "H",
     "regNo" : "DNR/00001/16",
     "surName" : "pandey",
     "firstName" : "rakesh"}, 

{“donorType”:“C”,         “regNo”:“DNR / 00002/16”,         “surName”:“pandey”,         “firstName”:“rakesh”},

{“donorType”:“C”,         “regNo”:“DNR / 00003/16”,         “surName”:“pandey”,         “firstName”:“rakesh”}

从这两个系列我想从袋子收集中获得已接受的袋子数据,在捐赠者收藏中将'donortype'作为'H'。如果有可能,请告诉我。解释一些例子