在mongodb中,err := db.Model(users).Where(id in (?),pg.In(ids)).Select()等同于什么

我正在尝试将一个go后端项目从postgres切换到mongodb,最后一个我无法修复的缺失部分是

err := db.Model(&users).Where("id in (?)", pg.In(ids)).Select()

有没有人能帮助我在mongodb中实现它的等价物

这是我想要更改的代码

const userloaderKey = "userloader"

func DataloaderMiddleware(db *pg.DB, next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        userloader := UserLoader{
            maxBatch: 100,
            wait:     1 * time.Millisecond,
            fetch: func(ids []string) ([]*models.User, []error) {
                var users []*models.User

                err := db.Model(&users).Where("id in (?)", pg.In(ids)).Select()

                if err != nil {
                    return nil, []error{err}
                }

                u := make(map[string]*models.User, len(users))

                for _, user := range users {
                    u[user.ID] = user
                }

                result := make([]*models.User, len(ids))

                for i, id := range ids {
                    result[i] = u[id]
                }

                return result, nil
            },
        }

        ctx := context.WithValue(r.Context(), userloaderKey, &userloader)

        next.ServeHTTP(w, r.WithContext(ctx))
    })
}

func getUserLoader(ctx context.Context) *UserLoader {
    return ctx.Value(userloaderKey).(*UserLoader)
}

转载请注明出处:http://www.xingnongyuan.com/article/20230526/2601163.html