我有一个mongodb集合,我试图限制结果集,但数据是由其他人创建的,日期格式似乎存储为“2016-05-12 00:00 :00.000Z”。我不确定如何格式化查找查询来限制这种类型的日期。我用其他类型的日期格式取得了成功,但不是这一次。有其他人遇到过这个问题吗?mongodb golang限制结果的日期
myCollection {
"_id" : {
"$oid" : bson.ObjectId
},
"createdDate" : {
"$date" : Date
}
这是我试过的。
toDate := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.UTC)
fromDate := toDate.AddDate(0, 0, -1)
collectionResult := collectionRecords.Find(bson.M{"retailer": result.Id, "createdAt": bson.M{"$gte": fromDate}})
最后,我想限制到一天,试图做到以下几点:
collectionResult := collectionRecords.Find(bson.M{"retailer": result.Id, "createdAt": bson.M{"$gte": fromDate, "$lt": toDate}})
collectionResult.All(&collectionData)
collectionCount, _ := collectionResult.Count()
fmt.Println("Count: ", collectionCount)
它总是返回0。就像我上面说我已经成功与UTC日期,但这个似乎困扰着我。
您是否问过如何创建time.Time过去24小时以及UTC,可能会截断时间?或者你问如何解析时间戳字符串?或者如何筛选将时间戳存储为字符串的记录? – baloo
我知道如何创建一个timeStamp,但是time.Time对象要么使用time.Local要么是time.UTC,这个值既不是。所以,当我试图限制mongodb结果集时,看起来没有记录。如果日期存储为UTC或本地,那么这将是一个简单的解决方案。 如何让mongodb在执行$ gte或$ lt调用时忽略时间戳记是我正在寻找的。 – CRob
“祖鲁语时区通常用于航空和军事中,作为UTC +0的另一个名称”。所以有效的日期你看到的是UTC时间戳,最后'Z'表示这是你所拥有的。 – baloo