1 回答

TA貢獻1816條經驗 獲得超4個贊
首先,我同意上面的評論者 - 您應該在Connect結構中添加時間戳。但即使沒有它,您也可以按 ObjectID 對您的條目進行排序,因為它是時間戳的一部分。是的,這是一種非常骯臟的方式,如果您使用分片或將數據庫傳輸到另一臺服務器可能會導致問題,但在您的情況下(單個 Mongolab 實例)可能會使用類似的東西(我不知道您的結構,所以“ip”和“message "只是假設)
var connects []Connect
c.Find(bson.M{"ip": "127.0.0.1"}).Sort("-_id").Limit(50).All(&connects) // 50 entries in desc order
for _, connect := range connects {
log.Println(connect.Message)
}
但真的給你Connect這樣的時間增加時間
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"log"
"time"
)
type Connect struct {
Ip string
Message string
Ts time.Time
}
func main() {
session, err := mgo.Dial("mongodb://souser:[email protected]:55855/catalog")
if err != nil {
panic(err)
}
defer session.Close()
session.SetMode(mgo.Monotonic, true)
c := session.DB("catalog").C("History")
for i := 0; i < 100; i++ {
c.Insert(&Connect{"127.0.0.2", fmt.Sprintf("Test message #%d", i), time.Now()})
if err != nil {
log.Fatal(err)
}
}
var connects []Connect
c.Find(bson.M{"ip": "127.0.0.2"}).Sort("-ts").Limit(50).All(&connects)
for _, connect := range connects {
log.Println(connect.Message)
}
}
- 1 回答
- 0 關注
- 181 瀏覽
添加回答
舉報