首页 > 解决方案 > Mongo Query 检索好友

问题描述

目前,我有这两个系列。 在此处输入图像描述

在此处输入图像描述

我正在检查我的_id是否与requestor_idreceiver_id匹配,并且在聚合后状态为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();
        });

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

标签: mongodb

解决方案


您必须使用$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();
        });

推荐阅读