【问题标题】:Get last inserted element from mongodb in GoLang从 GoLang 中的 mongodb 获取最后插入的元素
【发布时间】:2016-11-02 19:31:21
【问题描述】:

我有一个这样的结构:

type SavedData struct {
    ID   bson.ObjectId `bson:"_id"`
    Data string
    Date time.Time
}

我也有我的

collection := database.C("coll_name")

如何检索此集合中最后插入的条目?

谢谢

【问题讨论】:

    标签: mongodb go


    【解决方案1】:

    显然 mongoDB 默认按照插入时间排序 this question 所以你可以像这样跳过集合的前 N ​​个元素。

    var myData SavedData 
    dbSize, err := collection.Count()
    if err != nil {
            return err
    }
    
    err = c.Find(nil).skip(dbSize-1).One(&myData)
    if err != nil {
            return err
    }
    

    或者你可以按相反的顺序搜索

    c.Find(bson.M{ "$natural": -1 }).One(&myData)
    

    【讨论】:

    • 哪个更快?
    【解决方案2】:

    接受的答案是 5 岁。这应该适用于今天的 mongodb 驱动程序

    collection.FindOne(ctx, bson.M{"$natural": -1})
    

    【讨论】:

    • 嗨,如果我试试这个,我会得到unknown top level operator: $natural。你认为它会是什么?
    【解决方案3】:

    如果你想获取集合中的最新文档,你必须使用 mongo-driver 选项

    import(
        ...
        "go.mongodb.org/mongo-driver/mongo/options"
    )
    
    myOptions := options.FindOne()
    myOptions.SetSort(bson.M{"$natural":-1})
    collection.FindOne(ctx, bson.M{}, myOptions)
    

    【讨论】:

    • 试过了,myOptions := options.FindOne() myOptions.SetSort(bson.M{"$natural":-1}) current, err := idCollection.Find(context.TODO() , myOptions) 当前变为空
    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多