2016-03-04 72 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