当前位置: 首页 > 面试题库 >

如何使用猫鼬获取当前物品的下一个和上一个物品

陶文林
2023-03-14
问题内容

我有一个博客。在单个帖子页面上,我想显示指向上一个帖子的链接,如果有一个链接,则在底部发布下一个帖子。该链接应为特定帖子的标题。

我如何用猫鼬最简单的方式做到这一点?

我当前的控制器如下所示:

Post.findOne { slug : req.params.slug }, (err, post) ->
  res.render "blog/show.jade", locals: title: "This post", post: post

架构如下所示:

PostSchema = new Schema(
  title:
    type: String
    required: true
    index: true
  preamble: String
  body: String
  slug: String
  createdAt: Date
  updatedAt: Date
)

问题答案:

因此,假设您拥有这样的架构:

{
 _id,
 text    
}

我想_id是mongo ObjectId,所以我们包含发布日期,我可以对其进行排序

让我们考虑一下,我已经打开了ID为的当前帖子ObjectId( "43cc63093475061e3d95369d")(而不是我将使用curId),并且我需要知道下一个和上一个。还可以考虑一下,我们需要按创建日期降序对所有帖子进行一次排序:

获得下一篇文章,您可以这样:

db.posts.find({_id: {$gt: curId}}).sort({_id: 1 }).limit(1)

获得以前的帖子,您可以这样:

db.posts.find({_id: {$lt: curId}}).sort({_id: -1 }).limit(1)

一些事情:

  1. 如果您不使用mongodb,则ObjectId上述代码对您将不起作用,但是您仍然可以使用postDate代替id和当前post postDate代替curId
  2. 获取下一个/上一个帖子时要注意顺序,要检索需要排序asc的下一个帖子,要检索需要排序desc的上一个帖子。
  3. 我对猫鼬不熟悉,因此上面的脚本是mongodb shell脚本。


 类似资料:
  • 问题内容: 从最近6小时开始搜寻,但没有任何解决方法。请帮我。Elasticsearch ID为:2、4、7、8、11、15、15、16,.... 我的当前文档ID为11,然后如何获取下一个ID为15,上一个ID为8。 谢谢 问题答案: 您可以运行两个查询,一个查询下一个ID,一个查询前一个ID。 下一个ID的查询是: 而先前ID的查询为:

  • 但这似乎不是我想要的。它需要自动删除购物车中以前添加的产品,并在购物车中添加最新添加的产品。有人能给我提示什么需要更新的类工作在最新的Woo3.3.x?

  • 问题内容: 我正在使用以下方法在11.04 下获取上一个,当前和下个月: 直到今天,即2012年10月的最后一天(2012-10-31) 到目前为止,我得到的结果如下: 我想输出应该是,,分别。 不明白为什么输出会像这样。什么是获得一致性的好方法,而改为月份? 问题答案: 问题是,从字面上接受您的请求,并尝试使用9月31日(10月31日减去一个月)的日期,然后由于该日期不存在,它将移至第二天。将(

  • 问题内容: 如何使用JavaScript获取HTML中的下一个元素? 假设我有3个s,并且在JavaScript代码中获得了对1的引用,我想获取哪个是下一个,哪个是前一个。 问题答案: 在纯JavaScript中,我的想法是,您首先必须将它们归类到一个集合中。 因此,基本上,通过selectionDiv遍历集合以查找其索引,然后显然是-1 =上一个+1 =下一个在范围内 但是请注意,正如我所说的那

  • 问题内容: 说我有 ID的* 记录 * 我希望能够通过下一个/上一个链接导航到另一个。 问题是,我不知道 如何获取具有最近的较高ID的记录 。 因此,当我有一个 ID为ID 的记录时,我需要能够提取下一个现有记录,即为。 该查询可能看起来像 如何获取下一个/上一个记录而不获取整个结果集并手动迭代? 我正在使用MySQL 5。 问题答案: 下一个: 以前的:

  • 到目前为止,我的想法是生成一个超重的背包,然后递归地向后工作,一次替换一个项目,直到它<=最大重量。对于生成最优背包来说,这不是一个问题,然而,我真的想生成以下100个左右的背包。我想我可以通过继续我的递归过程来做到这一点,然而,我觉得这并不完全准确,因为a可能缺少稍微更优化的背包。