используется только первая history
запись, так как она имеет _id
в main
в коллекции *1004*
, поэтому при проверке первого документа истории
{
"_id": ObjectId("5e4e755b380054797d9db627"),
"user_id": "5e4e74eb380054797d9db625",
"history_id": ObjectId("5e4e755b380054797d9db627"),
"date": 1587650683433,
"__v": 1
}
и ваш запрос
db.main.aggregate([
{
$lookup: {
from: "history",
localField: "history_id",
foreignField: "_id",
as: "History"
}
},
{
$unwind: "$History"
},
{
"$match": {
$expr: {
$cond: {
if: {
$eq: [
"5e4e74eb380054797d9db623",
"$History.user_id"
]
},
then: {
$and: [
{
$gt: [
"$date",
"$History.date"
]
},
{ // also, this part has no meaning as the same condition is used in the if part
$eq: [
"5e4e74eb380054797d9db623",
"$History.user_id"
]
}
]
},
else: {}
}
}
}
}
])
условие if не выполнено, так как user_id в исторической модели "5e4e74eb380054797d9db625"
не равен указанному id "5e4e74eb380054797d9db623"
, поэтому , он переходит к другой части, которая получает все документы в main
коллекции
примечание: я добавил некоторый комментарий в запрос, не могли бы вы также проверить это?