繁体   English   中英

Mongoose在查询中查找$不起作用

[英]Mongoose Find $in Query Not Working

我有一些看起来像这样的代码

return courseModel.findQ({ autoReview: true}).then(function(autoCourses){
            autoCourses = _.pluck(autoCourses, '_id');

            console.log("autoCourses", autoCourses);

            return userCoursesModel.findQ({ 
                activityId: { 
                    $in: autoCourses
                }
            }).then(function(ucs) {
                var saves = [];

                console.log("ucs", ucs);

当我记录“autoCourses”时,我看到打印了一些文件,并且lodash pluck应该拔出每个文件的_id。 我确认这是正常的。

我正在使用mongoose-q:

https://github.com/iolo/mongoose-q

我也试过了正常的“发现”,但没有运气。

当我执行findQ({})并查找所有文档时,我可以看到与activityId匹配的文档。 例如:

autoCourses [ 55d3b57e395d0105a4828f18,
  55d4e0b8df5d4cdc23c916e2,
  55d23654642c1d05124c1ace,
  55d238b0642c1d05124c1ad2,
  55d23bb1ecce9f4b14f79c7b,
  55d257cf70721efc16db1c24,
  55d2682532eace3118376a95,
  55d2694a32eace3118376aad,

此外,当我使用findAll记录每个用户课程activityId时,我可以看到有匹配:

ucs.activityId 55de1dedc7c10dfc3bf5d9ae
ucs.activityId 55d3a91d46206dde7a46ed94
ucs.activityId 55df9974d8dfddb877a372f9
ucs.activityId 55d3b57e395d0105a4828f18

这里发生了什么? 为什么查询中的$不起作用?

更新:

根据要求,这是用户课程架构的样子:

var UserCourseSchema = new Schema({
    activityId: {
        type: Schema.Types.ObjectId,
        ref: 'courses',
        required: true
    },

和课程

var CourseSchema = new Schema({
    autoReview: {
        type: Boolean,
        default: false
    },

创建userCourse文档:

var newUserCourse = {
                    userId : userId,
                    activityId : activity._id,
                    steps : []
                }
                // copy steps from activity
                activity.steps.forEach(function(step){
                    newUserCourse.steps.push({partId: step._id});
                })
                return UserCourses.createQ(newUserCourse);

我联系了MongoDB对此的支持,我发现mongoose-q使用的是旧版本的mongoose(<版本4),而我的顶级依赖关系是4.0.5,这导致了奇怪的行为。 一旦我将mongoose-q更新为0.1.0并将mongoose更新为4.1.6并且该查找再次起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM