2016-03-04 63 views
1

我使用骨料加入如下所示:MongoDB的骨料与多个键联接

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

在上面的代码中,我可以添加对第二采集另一条件? 请让我知道是否有可能。

回答

0

不幸的是$查找匹配只使用源和外部集合中的一个字段。 如果您确实需要更复杂的WHERE子句 - 那么解决方案将是为两个集合添加一个额外的计算字段,以根据需要准确匹配查找。

+0

你可以添加这个信息给你直接查询? – profesor79

+0

正在考虑这个问题 - 并且为了匹配$ lookup,我们需要为这两个集合添加一个额外的字段,所以userId应该转换为如下形式:userId_canIUseThisInLookup。这是目前限制的一种解决方法,但仍然是一个可行的解决方案。为什么在这两个收藏? - >在它上面有一个匹配。 – profesor79

0

其实我并不是想要匹配两个集合的。我正在寻找与二次收集相匹配的领域。我要解释清楚我的问题:
这是我的主要采集 “袋”。其中包含

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

{ “_id”:物件( “568f4645fa0758af0e3fef26”), “巴尼奥”:“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”, “姓”: “潘迪”, “名字”: “勒凯什”},

{ “donorType” :“C”, “regNo”:“DNR/00003/16”, “姓”:“潘迪”, “名字”:“拉克什”}

从这两集我想从袋子收集了具有供体集合“donortype”为“H”接受袋数据。请让我知道,如果它是可能的。解释一些例子

+0

你打算执行这个作为查询,或者你有一个应用pice,顺便让我们在这里聊天 - 讨论它http://chat.stackoverflow.com/rooms/104903/mongo-queries-issues – profesor79