Mongoose在查询中查找$无法正常工作

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

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); 

当我login“autoCourses”时,我看到一些文件被打印出来,而lodash采摘应该把每个文件的_id都摘下来。 我确认这是正常工作。

我正在使用mongoose-q:

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

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

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

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

另外,当我用findAlllogging每个用户课程activityId时,我可以看到有匹配:

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

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

更新:

按照要求,这是用户课程模式的样子:

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

和课程

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

创builduserCourse文档:

 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,发现再次工作。