猿问

如何使用golang根据用户条件对mongodb集合应用多个过滤器

在我的前端,用户可以根据日期范围和/或目的应用筛选器。我如何生成MongoDB过滤器,以便如果用户在日期范围内传递,它只将其用作过滤器?如果它只是目的,它只使用目的,如果两者兼而有之,则同时应用两个过滤器。我正在使用golang。这是我的代码


var filterData map[string]interface{}

if purpose != "" {

        filterData = bson.M{

            "purpose": purpose,

     }

var filterDate map[string]interface{}

if //condition for date range{

filterDate = bson.M{

        "paymentDate": bson.M{

            "$gte": startdate,

            "$lt":  enddate,

        },

}

}

//here i cant apply both

cursor, err = collection.Find(conn.DatabaseContext, findQuery)


侃侃尔雅
浏览 157回答 1
1回答

慕姐8265434

为过滤器使用单个映射(例如),并且仅为用户提供的筛选条件添加元素。bson.M例如:var purpose stringvar startDate, endDate time.Timefilter := bson.M{}if purpose != "" {    filter["purpose"] = purpose}if !startDate.IsZero() && !endDate.IsZero() {    filter["paymentDate"] = bson.M{        "$gte": startDate,        "$lt":  endDate,    }}cursor, err = collection.Find(ctx, filter)
随时随地看视频慕课网APP

相关分类

Go
我要回答