【问题标题】:$match a $lookup if pubDate$match a $lookup if pubDate
【发布时间】:2021-09-01 06:55:45
【问题描述】:

我正在尝试只返回比今天发布时间短的剧集。 因为我们有播客剧集,我们要等到未来的日期才会发布,但它们已经在数据库中。

我尝试过的

[{$match: {
  'active': true,
  'station': {
    $all: ['DRN1']
  }
}}, {$lookup: {
  'from': 'episode',
  'localField': 'url',
  'foreignField': 'show_b',
   pipeline: [
          {
            $match: {
              "episode.pubDate":{$lte:new Date()}
          }

      }
  ],
  'as': 'match_docs'
}}, {$project: {
  'id': 1,
  'title': 1,
  'icon': 1,
  'banner': 1,
  'url': 1,
  'last': {
    '$slice': ['$match_docs.pubDate',-1]
  },
  'latestepisode': {
    '$slice': ['$match_docs', -1]
  }
}}, {$sort: {
  'last': -1
}}]

问题在于管道。 我得到的错误是

$lookup with 'pipeline' 不能指定 'localField' 或 'foreignField'

【问题讨论】:

    标签: mongodb lookup


    【解决方案1】:

    能够通过这样做来解决问题,我知道他们是更好的方法,因此期待其他答案。

    [{$match: {
      'active': true,
      'station': {
        $all: ['DRN1']
      }
    }}, {$lookup: {
      'from': 'episode',
      'localField': 'url',
      'foreignField': 'show_b',
      'as': 'match_docs'
    }}, {$project: {
      'id': 1,
      'title': 1,
      'icon': 1,
      'banner': 1,
      'url': 1,
      'match_docs':{
        '$filter':{
          "input" : "$match_docs",
                         "as" : "item",
                         "cond" : { "$lte" : ["$$item.pubDate",new Date()]}
        }
      },
      'last': {
    
              '$slice': ['$match_docs.pubDate',-1]
      },
      'latestepisode': {
        '$slice': ['$match_docs', -1]
      }
    }}, {$project: {
      'id': 1,
      'title': 1,
      'icon': 1,
      'banner': 1,
      'url': 1,
      'last': {
        '$slice': ['$match_docs.pubDate',-1]
      },
      'latestepisode': {
        '$slice': ['$match_docs', -1]
      }
    }}, {$sort: {
      'last': -1
    }}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2020-12-29
      • 2016-11-14
      相关资源
      最近更新 更多