【发布时间】:2020-11-02 15:57:33
【问题描述】:
我正在尝试使用 golang 从 mongodb 查询记录,但似乎无法正常工作。我尝试使用 ISODate() 使用 mongo cli 运行查询,它可以工作,但我不确定如何使用 golang 调用 ISODate。下面是我正在运行的代码的 sn-p。
type Record struct{
ID primitive.ObjectID `bson:"_id"`
PropertyID primitive.ObjectID `bson:"propertyID"`
CreatedAt primitive.DateTime `bson:"createdAt"`
}
// ....
cur, err := collection.Find(ctx, bson.M{"createdAt": bson.M{
"$gte": time.Now().UTC().AddDate(-1, 0, 0).Format(time.RFC3339),
}})
// ....
var recs []Record
err = cur.All(ctx, &recs)
如果我运行 len(recs) 我得到 0 但在 mongo-cli 中我在运行下面的代码时得到结果。
db.getCollection('records').find({
createdAt: {
$gte: ISODate("2019-11-02T23:16:58+08:00")
}
}).sort({createdAt: -1})
顺便说一下2019-11-02T23:16:58+08:00是time.Now().UTC().AddDate(-1, 0, 0).Format(time.RFC3339)的输出
在此先感谢大家:D
【问题讨论】:
-
将
CreatedDate声明为time.Time,并在查询中使用time.Time -
谢谢,所有答案都是有效的并且正在运行。有趣的是我也使用过
primitive.NewDateTimeFromTime,但我认为它不起作用,因为没有记录,但是当我记录cur.All(ctx, &rec)返回的错误时,现在我看到了问题。一些记录未定义为 propertyID。