【问题标题】:MongoDB query for related recordsMongoDB查询相关记录
【发布时间】:2013-01-28 01:55:56
【问题描述】:

我有一个博客应用程序。我需要进行 MongoDB 查询(SQL 很好,我会翻译它),以获取博客中的特定帖子,以及之前和之后的即时帖子那个帖子。

例如,给定这个帖子列表:

12/01/13 - Foo
15/01/13 - Bar
17/01/13 - Baz
27/01/13 - Taz

如何编写查询以获得其中之一,例如Bar和直系兄弟 FooBaz

出于性能原因,我希望这样做不对数据库进行三个不同的查询

在我的应用程序中,我获取了一个这样的帖子:

model.findOne({
    date: {
        $gte: new Date(2013, 0, 15),
        $lt: new Date(2013, 0, 15, 24)
    },
    slug: 'Bar'
}, function(result){
    return { entry: result };
});

【问题讨论】:

  • 鉴于您的搜索条件不是特定文档(而是日期范围),这不适合单个 MongoDB 请求。即使在 RDBMS 中,这也可能需要一个偷偷摸摸的子查询。 :) 为什么 3 个查询有问题?
  • 如何找到初始项?按 ID、日期或其他标准?
  • @Ian 实际上有两种方式,按 Id 或按 Date + Slug

标签: sql-server-2008 node.js mongodb


【解决方案1】:

这是一种可能性(涉及 2 个查询,一个查找主要帖子,第二个查找最近的文档):

  • 将数据/帖子视为双向链表。
  • 您需要将参考 ID 存储为每个帖子文档(数组)中“上一个”和“下一个”帖子的链接。这使得插入稍微复杂一些,但按过去某处的日期插入“新”博客文章似乎不太可能。
  • 索引链接字段
  • 搜索具有主文档 ID $in 链接字段的文档

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 2013-02-18
    • 2023-03-23
    • 2014-07-27
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多