Как использовать условие $ match для опции $ lookup в результате массива - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть две коллекции, одна коллекция looksee, другая коллекция assignee_looksee, я хочу получить результат, который соответствует условию looksee_assigne receient_user, и покажу данные looksee и покажу результат, другой assignee_looksee, кроме совпадения receiveient_user.

$ условие соответствия не работаетв "is_seen": true в результате массива

LookseeAssignee.aggregate([
{ '$match': {"receipient_user": mongoose.Types.ObjectId(sender_user_id)}},
{ "$lookup": {
    "from": "looksees",
    "localField": "looksee_id",
    "foreignField": "_id",  
    "as": "looksee_info",
}},

{ "$unwind": "$looksee_info" },


{ "$lookup": {
    "from": "looksee_assignees",
    "localField": "looksee_info._id", 
    "foreignField": "looksee_id",   
    "as": "looksee_assignee_info",
}},
// { "$unwind": "$looksee_assignee_info" },

{ "$match": { "looksee_assignee_info": { 
            $elemMatch: {"status":  1}
        } 
    }
}
], function(err, looksee_receive){
    res.send(looksee_receive);
});

Результат:

'looksee_info': {
  '_id': '5cb58a857b96bd0e413b4fd5',
  'is_abandoned': false,
  'abandoned_time': null,
  'sender_id': '5c4deaf53c45af6db6d9db30',
  '__v': 0
},
'looksee_assignee_info': [
  {
    '_id': '5cb58a857b96bd0e413b4fd6',
    'receipient_user': '5c63b8f507e125ab4f320e06',
    'is_seen': false,

  },
  {
    '_id': '5cb58a857b96bd0e413b4fd7',
    'receipient_user': '5c4deaf53c45af6db6d9db30',
    'is_seen': true,       
  },
  {
    '_id': '5cb58a857b96bd0e413b4fd8',
    'receipient_user': '5c6e472d88138d30a0104b6b',
    'is_seen': false,        
  }
]
...