为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
侃侃尔雅 2022-08-15 19:37:34
在我的前端,用户可以根据日期范围和/或目的应用筛选器。我如何生成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 bothcursor, err = collection.Find(conn.DatabaseContext, findQuery)
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

为过滤器使用单个映射(例如),并且仅为用户提供的筛选条件添加元素。bson.M


例如:


var purpose string

var startDate, endDate time.Time


filter := 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)


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信