Database
[{"name":"Ivan","payments":[{"date":new Date("2019-01-01"),"details":[{"payment_system":"A","spent":95},{"payment_system":"B","spent":123}]},{"date":new Date("2019-01-03"),"details":[{"payment_system":"A","spent":12},{"payment_system":"B","spent":11}]}]},{"name":"Mark","payments":[{"date":new Date("2019-01-01"),"details":[{"payment_system":"D","spent":456},{"payment_system":"B","spent":123}]},{"date":new Date("2019-01-02"),"details":[{"payment_system":"A","spent":123},{"payment_system":"C","spent":4}]}]},{"name":"Tom","payments":[{"date":new Date("2019-01-01"),"details":[{"payment_system":"D","spent":456},{"payment_system":"E","spent":50},{"payment_system":"F","spent":100},{"payment_system":"B","spent":123}]},{"date":new Date("2019-01-02"),"details":[{"payment_system":"A","spent":123},{"payment_system":"C","spent":4}]}]}]
Query
db.collection.aggregate([{$set:{payments:{$filter:{input:"$payments",cond:{$gte:["$$this.date",new Date("2019-01-02")]}}}}},{$set:{spent_total:{$reduce:{input:"$payments.details.spent",initialValue:[],in:{$concatArrays:["$$value","$$this"]}}}}},{$set:{spent_total:{$sum:"$spent_total"}}},{$match:{"spent_total":{$gte:100}}}])