Database

db={"collection1":[{"_id":100,"text":"i am good","history":[{"date":new Date("2023-06-01"),"updated":new Date("2023-06-02")}]},{"_id":101,"text":"i am naughty"}],"collection2":[{"_id":1,collection1Id:100,"date":new Date("2023-06-01"),"updated":new Date("2023-06-02")},/** is present in 1 so should not goto this collection*/{"_id":2,collection1Id:101,"date":new Date("2023-07-03"),"updated":new Date("2023-07-05")}]}

Query

db.collection1.aggregate([{"$lookup":{"from":"collection2","localField":"_id","foreignField":"collection1Id","as":"collection2"}},{$set:{history:{"$cond":{"if":{$eq:[{$type:"$history"},"missing"]},"then":"$collection2","else":"$history"}}}},{$unset:"collection2"}])

Result