2014-11-06 4 views
8

हाय मेरे पास "my_sales" नामक एक संग्रह है जिसमें फ़ील्ड product_name, price, sale_date है।मैं मागो और गो का उपयोग कर तिथि सीमा के साथ मोंगोडीबी से कैसे पूछ सकता हूं?

मेरे दस्तावेज़ लग रहा है

तरह
{ 
    "_id" : ObjectId("5458b6ee09d76eb7326df3a4"), 
    "product_name" : product1, 
    "price" : 200, 
    "sale_date" : ISODate("2014-11-04T11:22:19.589Z") 
} 
{ 
    "_id" : ObjectId("5458b6ee09d76eb7326df3a4"), 
    "product_name" : product1, 
    "price" : 200, 
    "sale_date" : ISODate("2014-11-04T11:22:19.589Z") 
} 
{ 
    "_id" : ObjectId("5458b6ee09d76eb7326df3a4"), 
    "product_name" : product1, 
    "price" : 200, 
    "sale_date" : ISODate("2014-11-04T11:22:19.589Z") 
} 
{ 
    "_id" : ObjectId("5458b6ee09d76eb7326df3a4"), 
    "product_name" : product1, 
    "price" : 200, 
    "sale_date" : ISODate("2014-11-05T11:22:19.589Z") 
} 

मैं इस

db.my_sales.find({ sale_date: { $gt: ISODate("2014-11-04"), $lt: new ISODate("2014-11-05") }); 

तरह मोंगो खोल में करने की कोशिश की यह सही परिणाम दे रही है। अब मैं golang मैं इस

var sales_his []Sale 
err := c.Find(bson.M{"sale_date":bson.M{ "$gt": "ISODate("+date_from+")", "$lt": "ISODate("+date_to+")" } }).All(&sales_his) 

तरह की कोशिश की का उपयोग कर एक ही बात क्वेरी करने के लिए की जरूरत है इसके देने अशक्त परिणाम कृपया मदद

उत्तर

20

MgO BSON दिनांकों time.Time का समर्थन करता है।

तो अपने struct इस तरह दिखता है:

type Sale struct { 
    ProductName string `bson:"product_name"` 
    Price  int  `bson:"price"` 
    SaleDate time.Time `bson:"sale_date"` 
} 

तो फिर तुम इस तरह यह क्वेरी कर सकते हैं:

fromDate := time.Date(2014, time.November, 4, 0, 0, 0, 0, time.UTC) 
toDate := time.Date(2014, time.November, 5, 0, 0, 0, 0, time.UTC) 

var sales_his []Sale 
err = c.Find(
    bson.M{ 
     "sale_date": bson.M{ 
      "$gt": fromDate, 
      "$lt": toDate, 
     }, 
    }).All(&sales_his) 
0

मैं तिथि सीमा क्वेरी करने के लिए नया तरीका है:

// convert to date 
fromTime := time.Unix(1509358405981/1000, 0)  

// Convert date to ObjectID with time  
fromObjectBson := bson.NewObjectIdWithTime(fromTime) 

// condition  
bson.M{"_id":bson.M{"$gt": fromObjectBson}} 

यह आपकी क्वेरी को तेज करेगा।

संबंधित मुद्दे

 संबंधित मुद्दे