Mongodb $in查询运算符不在聚合框架中工作

Mongodb $in查询运算符不在聚合框架中工作,mongodb,mongoose,aggregation-framework,Mongodb,Mongoose,Aggregation Framework,我有一个很大的数据集集合,我想使用mongo聚合框架运行一些自定义查询 我正在努力做到以下几点 minLimit和maxLimit是用于指定日期范围的日期对象 Tickets.aggregate( { $match: { timestamp: { $gte: minLimit, $lte: maxLimit } } }, { $match: { staffId: { $in: staffIds } } } ).allowDiskUse(true).exec(cb); 如果我不包括员工匹配条件

我有一个很大的数据集集合,我想使用mongo聚合框架运行一些自定义查询

我正在努力做到以下几点

minLimit和maxLimit是用于指定日期范围的日期对象

Tickets.aggregate(
{ $match: { timestamp: { $gte: minLimit, $lte: maxLimit } } },
{ $match: { staffId: { $in: staffIds } } }

).allowDiskUse(true).exec(cb);
如果我不包括员工匹配条件,上述操作正常,但在我包括员工匹配条件后,不会返回任何记录

staffIds是一个ID数组,我使用lodash Pulk方法获得它。 首先,我使用

Staff.find({some filter condition}, callback);
然后我用

var staffIds = _.pluck(results, '_id');
我将通过这项工作以符合条件

为什么它不起作用?如果我删除匹配中的$,它工作正常。
您可以尝试只匹配{$match:{staffId:{$in:staffIds}}},如果仍然没有结果,您可能需要查看您的staffIds数组是否与Staff的格式相同。\u id可能是ObjectId格式。最后是检查工作人员。\工作人员中的id与给定的时间戳匹配:。是的,即使单个匹配也不起作用。我检查了人员。_id是ObjectId格式,staffies是字符串格式。所以我必须把每个ID都转换成ObjectDoop吗,希望这太晚了:是的!!您应该将这些ID转换为ObjectId:。