【问题标题】:MongoDB, only display objects in a collection where a status matches in anotherMongoDB,仅显示集合中状态匹配的对象
【发布时间】:2015-05-20 15:42:13
【问题描述】:

我有 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);
        });

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    尝试使用

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

    而不是

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

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

    来自populate as join populate 不是一个连接,它只是一个方便的功能,可以通过附加查询来跟进主查询,以从其他集合中提取相关数据。你需要有

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

    mongo.competition.find()

    【讨论】:

    • 感谢您的回答。这不会只是调整“in”/“not in”吗?似乎我使用populate 的当前方式不起作用?
    • 你有没有映射竞争和产品。这个链接可能会帮助mongoosejs.com/docs/populate.html 我猜你错过了映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2016-05-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多