2014-11-06 12 views
8

Witam Mam kolekcję o nazwie "my_sales", która ma pola product_name, price, sale_date.Jak mogę zapytać MongoDB o zakres dat za pomocą mgo i Go?

Moja doc wygląda

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

Próbowałem w Mongo skorupy jak ten

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

To daje poprawny wynik. Teraz muszę zapytać samo używając golang starałem się ten

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

Jego dając zerowy wynik pomóż

Odpowiedz

20

MgO obsługuje time.Time dat BSON.

Więc jeśli struktura wygląda następująco:

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

Następnie można wyszukać go tak:

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

mam nowy sposób kwerendy Zakres dat:

// 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}} 

Spowoduje to przyspieszenie zapytania.

Powiązane problemy