こんにちは、product_name、price、sale_dateの各フィールドを持つ「my_sales」という名前のコレクションがあります。
私のドキュメントは次のようになります
{
"_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)
そのnull結果を与える助けてください
mgoは、BSON日付に対して time.Time をサポートします。
したがって、構造体が次のようになっている場合:
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)
日付範囲を照会する新しい方法があります:
// 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}}
これにより、クエリが高速化されます。
これもチェックできます。この方法を使用している場合は、parseを使用します。
db.getCollection('user').find({
createdOn: {
$gt: ISODate("2020-01-01T00:00:00.000Z"),
$lt: ISODate("2020-03-01T00:00:00.000Z")
}
})
解析なしの関数:文字列を使用して値を取得します
db, err := GetDB()
if err != nil {
return nil, err
}
defer db.Session.Close()
var date []models.User
coll := db.C(constants.USERTABLE)
findQuery := bson.M{"createdOn": bson.M{"$gt": echo.FromDate, "$lt": echo.ToDate}}
shared.BsonToJSONPrint(findQuery)
err = coll.Find(findQuery).All(&date)
if err != nil {
return nil, err
}
return date, nil
}