在我的前端,用户可以根据日期范围和/或目的应用筛选器。我如何生成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)
- 1 回答
- 0 关注
- 156 浏览
添加回答
举报
0/150
提交
取消