mongodb日期范围,在Java中的MongoDB中使用日期范围进行查询

I am new at using MongoDB. I have it filled with receipts, for example: one receipt looks like this :

{

"_id" : {

"$oid" : "510fa057c6f818c2bfd0b279"

} ,

"StoreName" : "Metro" ,

"StoreNumber" : 521 ,

"Items" : [ {

"ItemName" : "Battery" ,

"ItemManufacturer" : "Duracell" ,

"ItemPrice" : 12 ,

"ItemQuantity" : 2 ,

"ItemTotalPrice" : 24

} ,

{

"ItemName" : "TV CRT 25 inch" ,

"ItemManufacturer" : "Toshiba" ,

"ItemPrice" : 1659 ,

"ItemQuantity" : 1 ,

"ItemTotalPrice" : 1659

} ,

{

"ItemName" : "Mobile" ,

"ItemManufacturer" : "Nokia" ,

"ItemPrice" : 2966 ,

"ItemQuantity" : 4 ,

"ItemTotalPrice" : 11864

}

] ,

"Date" : {

"$date" : "2012-06-16T01:21:11.758Z"

} ,

"Total" : 13547

}

I need to make a query where I specify a range of dates to get all the receipts in that range. I've tried the following query, but it returns nothing.

BasicDBObject query =

new BasicDBObject(

"Date",

new BasicDBObject(

"$gt",

"2012-06-20T10:05:21.968Z"

).append(

"$lte",

"2012-09-24T05:29:43.031Z"

)

);

解决方案

MongoDB dates work in conjunction with java.util.Date. Change your query to something like this :

Date start = new java.util.Date(2012, 06, 20, 10, 05);

Date end = new java.util.Date(2012, 06, 20, 10, 30);

BasicDBObject query = new BasicDBObject("Date",

new BasicDBObject("$gt", start)).

append("$lte", end) ));