Database

[{sections:[{fields:[{name:"Date",value:"2020-11-15T15:59:59.999Z"/** this is string*/},{name:"Title",value:"My book"},{name:"Author",value:"Henry"}]}]},{sections:[{fields:[{name:"Date",value:"2020-11-05T15:59:59.999Z"/** this is string*/},{name:"Title",value:"My book 2"},{name:"Author",value:"Henry 2"}]}]}]

Query

db.collection.aggregate([{$addFields:{fieldSort:{$toDate:{$first:{$first:{$cond:{if:{$eq:["$sections.fields.name","For Period"],},then:{$toDate:"$sections.fields.value",},else:"$sections.fields.value",},},},},},},},{"$match":{$expr:{$eq:[true,{"$reduce":{"input":"$sections","initialValue":false,"in":{"$reduce":{"input":"$$this.fields","initialValue":false,"in":{$or:["$$value",{$and:[{$eq:["$$this.value","My book"],}]},{$and:[{$eq:["$$this.name","Date"],},{$gte:[{"$toDate":"$$this.value"},new Date("2020-11-01")]},{$lte:[{"$toDate":"$$this.value"},new Date("2020-11-30")]}]}]}}}}}]}}},{$sort:{"fieldSort":-1}}])

Result