Desde mi interfaz, los usuarios pueden aplicar filtros según el rango de fechas o el propósito, o ambos. ¿Cómo genero el filtro MongoDB para que si los usuarios pasan en el rango de fechas, solo lo use como filtro? Si es solo propósito, solo usa propósito y si es ambos, aplica ambos filtros. Estoy usando golang. Aquí está mi código
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)Utilice un solo mapa para el filtro (por ejemplo, bson.M ) y solo agregue elementos para las condiciones de filtro que proporcionó el usuario.
Por ejemplo:
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)