如何通过Golang中的键数组在mongodb中查找对象?

时间:2020-04-27 20:34:47

标签: mongodb go mongodb-query

我需要在数据库中找到与GET请求中的查询参数匹配的项目。

func (s *APIServer) getUserByFilter() http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        params := r.URL.Query()
        user, _ := s.store.User().GetUserByFilter(params)

        userResponse := &model.UserResponse{
            ID:                 user.ID,
            PhoneNumber:        user.PhoneNumber,
            FirstName:          user.FirstName,
            LastName:           user.LastName,
            PhotoURL:           user.PhotoURL,
        }
        respondWithJSON(w, http.StatusOK, userResponse)
    }
}
func (r *UserRepository) GetUserByFilter(queries map[string][]string) (*model.User, error) {
    var userResult *model.User

    collection := r.store.db.Collection("users")

    var queriesBson []bson.M
    for k, v := range queries {
        testBson = append(queriesBson, bson.M{k: v})
    }

    err := collection.FindOne(context.TODO(), queriesBson).Decode(&userResult)
    if err != nil {
        return nil, err
    }

    return userResult, nil
}

我尝试这样做,但是在尝试调用FindOne函数时出现错误,该函数无法接受slice作为参数。

0 个答案:

没有答案