我是使用MongoDB的新手。我收到了收据,例如:一张收据如下:
{
"_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
}
我需要进行查询,指定一系列日期以获取该范围内的所有收据。我已经尝试了以下查询,但它什么也没有返回。
BasicDBObject query =
new BasicDBObject(
"Date",
new BasicDBObject(
"$gt",
"2012-06-20T10:05:21.968Z"
).append(
"$lte",
"2012-09-24T05:29:43.031Z"
)
);
答案 0 :(得分:6)
MongoDB日期与java.util.Date一起使用。将您的查询更改为以下内容:
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) ));
答案 1 :(得分:0)
你可以尝试:
Date gtDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").parse("2012-06-20T10:05:21.968");
Date lteDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").parse("2012-09-24T05:29:43.031");
BasicDBObject dateQueryObj = new BasicDBObject("Date", new BasicDBObject("$gt", gtDate).append("$lte", lteDate));
DBCursor cursor = collection.find(dateQueryObj);