It is possible to combine a geospatial query with a date range
query.
Here is an example, performed in the JS shell:
> db.points.save({_id:1, pos:[1,1], date:new Date("4/16/2012")});
> db.points.save({_id:2, pos:[2,1], date:new Date("4/21/2012")});
> db.points.save({_id:3, pos:[3,1], date:new Date("4/22/2012")});
> db.points.save({_id:4, pos:[5,1], date:new Date("4/22/2012")});
> db.points.ensureIndex({pos:"2d"})
> myPolygon = [[0,0], [0,4], [2,6], [4,4], [4,0]]
> db.points.find({ "pos" : { "$within" : { "$polygon" : myPolygon } }, date:{$gt:new Date("4/20/2012"), $lt:new Date("4/23/2012")} })
{ "_id" : 2, "pos" : [ 2, 1 ], "date" :
ISODate("2012-04-21T04:00:00Z") }
{ "_id" : 3, "pos" : [ 3, 1 ], "date" :
ISODate("2012-04-22T04:00:00Z") }
Only points with _id:2, and _id:3 are returned, because they are
inside of the polygon and match the given date range.
The documentation on bounds queries may be found on the "Geospatial
Indexing" page.
http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-BoundsQueries