如何使用mgo和Go查询日期范围的MongoDB?

嗨,我有一个名为“ 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")

}

我像这样在mongo shell中尝试过

 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)

它给空结果请帮助

回答:

氧化镁支持了time.time为BSON日期。

因此,如果您的结构看起来像这样:

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)

以上是 如何使用mgo和Go查询日期范围的MongoDB? 的全部内容, 来源链接: utcz.com/qa/413974.html

回到顶部