猿问

可选在 .Find() MongoDB 查询中查找

我的列表可能会收到一个过滤器参数,但此参数是强制性的。


status := r.FormValue("status")

var bet []*Bet


if err := db.C(collectionName).Find(bson.M{"status": status}).Sort("-data-criacao").All(&bet); err != nil {

            http.Error(w, err.Error(), http.StatusInternalServerError)

            return

}


如果未通知参数,则查询不返回任何结果。


要返回所有结果,我曾经执行以下操作


    var bet []*Bet


    if err := db.C(collectionName).Find(nil).Sort("-data-criacao").All(&bet); err != nil {

                http.Error(w, err.Error(), http.StatusInternalServerError)

                return

}

我怎样才能满足这两种选择?


汪汪一只猫
浏览 97回答 1
1回答

天涯尽头无女友

只需使用一条if语句根据是否提供参数来构造您的查询。是这样的:status := r.FormValue("status")var bet []*Betvar filter bson.Mif status != "" {    filter = bson.M{"status": status}}err := db.C(collectionName).Find(filter).Sort("-data-criacao").All(&bet)if err != nil {    http.Error(w, err.Error(), http.StatusInternalServerError)    return}
随时随地看视频慕课网APP

相关分类

Go
我要回答