Mongodb 结构/结果的逆时间顺序
刚开始学咕噜 想知道如何在Go中按相反顺序对结构元素进行排序。比方说,我从数据库中得到的结果如下:Mongodb 结构/结果的逆时间顺序,mongodb,sorting,go,time,mgo,Mongodb,Sorting,Go,Time,Mgo,刚开始学咕噜 想知道如何在Go中按相反顺序对结构元素进行排序。比方说,我从数据库中得到的结果如下: var results []<someClass> collection.C(results).Find(bson.M{"<someid>":<id_val>}).All(&results) var结果[] collection.C(results.Find(bson.M{“”:}).All(&results) 现在,我的数据库对象/结果在slice
var results []<someClass>
collection.C(results).Find(bson.M{"<someid>":<id_val>}).All(&results)
var结果[]
collection.C(results.Find(bson.M{“”:}).All(&results)
现在,我的数据库对象/结果在slice
results
中可用。如何在名为time的列上按相反顺序对切片结果进行排序?最简单的方法是让MongoDB对记录进行排序:
var results []YourType
err := sess.DB("").C("collname").Find(bson.M{"someid": "someidval"}).
Sort("-timefield").All(&results)
如果出于某种原因您不能或不想这样做,您可以使用该软件包。你需要实施
例如:
type YourType struct {
SomeId string
Timestamp time.Time
}
type ByTimestamp []YourType
func (a ByTimestamp) Len() int { return len(a) }
func (a ByTimestamp) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a ByTimestamp) Less(i, j int) bool {
return a[i].Timestamp.After(a[j].Timestamp)
}
这个ByTimestamp
类型是YourType
的一部分,它定义了一个反向的时间戳顺序,因为Less()
方法用于确定元素和索引i
是否小于索引j
处的元素
并使用它(在桌面上试用):
Less()
的另一种实现是使用,但将索引j
处的元素与索引i
进行比较:
func (a ByTimestamp) Less(i, j int) bool {
return a[j].Timestamp.Before(a[i].Timestamp)
}
在上尝试此变体。是否从MongoDB获得结果?@conceptQuest,Yes.Yes。谢谢你的回答。我也理解你的意图。
func (a ByTimestamp) Less(i, j int) bool {
return a[j].Timestamp.Before(a[i].Timestamp)
}