我有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"
}
答案 0 :(得分:0)
您需要将聚合函数与$ lookup一起使用。
.aggregate([
{
$lookup: {
from: "transationHistory",
localField: "userId",
foreignField: "userId",
as: "result"
}
}, //other parts of aggregate
//match, project, group or whatever you need
])