我正在检查我的 _id 是否与 requestor_id 或 recipient_id 匹配,并且 status 是否为1凝结。我从中得到三个对象,而我只想得到一个。下面是我的代码。
//myID
var user_id = req.body.user_id;
dbo.collection('User_List').aggregate([
{$lookup:{
from:'Friendship',
pipeline:[{
$match:{
$expr:{
$and:[{
$or:[
{$eq:['$requester_id',user_id]},
{$eq:['$recipient_id',user_id]}
]},
{$eq:['$status',1]}
]}
}
}
],
as:'friends'}},
{$unwind:'$friends' }]).toArray(function(err,data){
if(err) console.log(err);
console.log((data));
db.close();
});
如果有一个更好的架构来组织我的收藏,请也告诉我。预先感谢您的任何评论。
答案 0 :(得分:0)
您必须使用$match
来结识特定用户的朋友。
//myID
var user_id = req.body.user_id;
dbo.collection('User_List').aggregate([
{$match: { '_id': ObjectId(user_id)}},
{$lookup:{
from:'Friendship',
pipeline:[{
$match:{
$expr:{
$and:[{
$or:[
{$eq:['$requester_id',user_id]},
{$eq:['$recipient_id',user_id]}
]},
{$eq:['$status',1]}
]}
}
}
],
as:'friends'}},
{$unwind:'$friends' }]).toArray(function(err,data){
if(err) console.log(err);
console.log((data));
db.close();
});