Database

db={mySchema:[{/**_id: new ObjectId("some-string"),*/objWithDynamicKeys:{"62f74bcfd4aa7ff5c45c7fe3":2,"62f74bcfd4aa7ff5c45c7fe4":5,"62f74bcfd4aa7ff5c45c7fe5":1,}}],otherSchema:[{_id:ObjectId("62f74bcfd4aa7ff5c45c7fe3"),limit:5,name:"First",},{_id:ObjectId("62f74bcfd4aa7ff5c45c7fe4"),limit:5,name:"Second",},{_id:ObjectId("62f74bcfd4aa7ff5c45c7fe5"),limit:3,name:"Third",}]}

Query

db.mySchema.aggregate([{$set:{objWithDynamicKeys:{$objectToArray:"$objWithDynamicKeys"}}},{$unwind:"$objWithDynamicKeys"},{$lookup:{from:"otherSchema",let:{key:{$toObjectId:"$objWithDynamicKeys.k"},value:"$objWithDynamicKeys.v"},as:"out",pipeline:[{$match:{$expr:{$and:[{$eq:["$$key","$_id"]},{$lt:["$$value","$limit"]}]}}}]}},{$match:{out:{$ne:[]}}},{$replaceWith:{$first:"$out"}}])

Result