Mongo Query检索朋友

时间:2019-07-19 03:53:43

标签: mongodb

目前,我有这两个收藏。 enter image description here

enter image description here

我正在检查我的 _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();
        });

如果有一个更好的架构来组织我的收藏,请也告诉我。预先感谢您的任何评论。

1 个答案:

答案 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();
        });