如何在mongodb中加入两个集合

时间:2018-06-26 07:41:17

标签: mongodb

我有2个集合userInfo和transationHistory。 userInfo包含userId,registerDate等,transationHistory包含userId,transationId,itemId等。
数据库如下所示,数据超过一千:

transationHistory:{
 {
   transationId:asd123
   itemId:A
   userId:123
 }

 userInfo:{
  userId:123
  registerDate:"06-18-2018"
 }

所以我想吸引那些使用registerDate购买了商品A的用户。

db.transationHistory.aggregation({$match:{item:"A"}},{$project:{userId:1}})  

然后我得到一个userId列表,然后

db.userInfo.aggregation({$match:{userId:{$in:[<listOfUserId>]}}},{$project:{registerDate:1}})

然后我将两个结果集都放入excel,并使用vlookup函数获取并集。有没有更简单的方法,仅使用mongodb查询来获取联合?

已编辑

我知道如何在mySQL中执行以下操作:

SELECT T.itemId,T.userId,U.registerDate
FROM transationHistory T,userInfo U
WHERE T.userId=U.userId AND T.itemId="A"

示例输出:

{
itemId:A  
userId:123  
registerDate:"06-18-2018"
}

{
itemId:A  
userId:1435  
registerDate:"06-16-2018"
}

1 个答案:

答案 0 :(得分:0)

您需要将聚合函数与$ lookup一起使用。

.aggregate([
        {
            $lookup: {
               from: "transationHistory",
               localField: "userId",
               foreignField: "userId",
               as: "result"
            }
        }, //other parts of aggregate
    //match, project, group or whatever you need 
])