Database
db={"Users":[{"id":1,"category":"VIP","area":"XXX"},{"id":2,"category":"VIP","area":"YYY"}],"History":[{"userId":1,"usage":26,"balance":99},{"userId":2,"usage":24,"balance":101}]}
Query
db.Users.aggregate([{$match:{category:"VIP",area:"XXX"}},{$graphLookup:{from:"History",as:"myNewData",startWith:"$id",connectToField:"userId",connectFromField:"id",maxDepth:0,restrictSearchWithMatch:{usage:{$gt:25},balance:{$lt:100}}}},{$match:{"myNewData":{$elemMatch:{$exists:true}}}}])