首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$match a $lookup if pubDate

$match a $lookup if pubDate
EN

Stack Overflow用户
提问于 2021-09-01 06:55:45
回答 1查看 43关注 0票数 0

我试着只返回不到今天发布的剧集。因为我们有播客剧集,我们直到未来的日期才发布,但它们已经在DB中了。

我试过的

代码语言:javascript
复制
[{$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不能指定“localField”或“foreignField”

EN

回答 1

Stack Overflow用户

发布于 2021-09-01 08:42:05

通过这样做才能解决问题,我知道自己是一个更好的方法,所以期待着其他的答案。

代码语言:javascript
复制
[{$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
}}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69009068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档