3

私はMongoDBを初めて使用します。たとえば、領収書でいっぱいです。1つの領収書は次のようになります。

{ 
  "_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"
           )
       );
4

2 に答える 2

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) ));
于 2013-02-04T13:26:11.140 に答える
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);
于 2013-02-04T18:28:59.363 に答える