MongoDB,仅显示状态在另一个中匹配的集合中的对象

时间:2015-05-20 05:48:27

标签: javascript node.js mongodb

我有2个系列 - 比赛和产品。竞赛包含产品objectID,产品包含competition_status

我要做的只是展示其产品competition_status为“完成”或“当前”的比赛。

我已经实现了这一点,但是,我也看到了具有“待定”状态的比赛,只有这两个产品对象为空。我不知何故需要将这些比赛从输出的比赛对象中删除。

api.mongo.competition.find(filter)
      .populate('product', 'name competition_status', { competition_status: { $in: ['Complete', 'Current'] } })


      .exec(
        function(err, competitions) {
          if(err) {
            next(err, {});
            return;
          }
          next(err, competitions);
        });

1 个答案:

答案 0 :(得分:0)

尝试使用

{ competition_status: { $nin: ['Pending'] }

而不是

{ competition_status: { $in: ['Complete', 'Current'] }

您可以在此处获取更多信息$nin

来自populate as join

populate不是一个连接,它只是一个便利函数,用于跟踪主查询和其他查询以从其他集合中提取相关数据。你需要

{ competition_status: { $in: ['Complete', 'Current'] } 

in

mongo.competition.find()