我的请求收集,
{
"_id" : ObjectId("57e0b8cd5eeba5140b270ca8"),
"sent_id" : "57dfcdc21ad7cf658860926d",
"recieved_id" : "57dfcddf1ad7cf658860926e",
"status" : 1
}
我的个人资料集
{
"_id" : ObjectId("57dfcddf1ad7cf658860926e"),
"firstname" : "John",
"lastname" : "David",
"profilename" : "John David",
"email" : "john@gmail.com"
}
这里我想加入带有sent_id(collection)= _id(个人资料)的集合,我尝试了下面的代码,
exports.getrequestsdetails = function (req, res) {
var params = req.params;console.log(params)
var record = db.collection('requests');
var item = {"sent_id": params.id,"status":1};
record.aggregate([
{
$lookup:
{
from: "profile",
localField: "sent_id",
foreignField: "_id",
as: "profilename"
}
}
]).toArray((err, result) => {
if (err){ return
}
if(result){
response = {status:'success',data:result};
} else{
response = {status:'fail',data:[]};
}
res.send(response);
});
};
这是我的结果,我无法看到集合已加入,
{
"status": "success",
"data": [
{
"_id": "57dfeb279559c37854adb92f",
"profilename": []
},
{
"_id": "57e0b8cd5eeba5140b270ca8",
"sent_id": "57dfcdc21ad7cf658860926d",
"recieved_id": "57dfcddf1ad7cf658860926e",
"status": 1,
"profilename": []
}
]
}
使用上面的代码我遇到了两个问题,
1)我正在比较sent_id和_id,这里_id是一个对象类型,所以如何比较它们。
2)我想将发送的id作为params传递,我该怎么做?
任何人都可以建议我帮忙,因为我是node和mongo.Thanks的新手。
答案 0 :(得分:0)
John的ID为57dfcddf1ad7cf658860926_e_
,不等于request.sent_id 57dfcdc21ad7cf658860926_d_
。因此没有加入。
您需要在aggregate()调用中添加$match
子句
$ match:{sent_id:params.id}