Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 MongoDB查询相关记录_Sql Server 2008_Node.js_Mongodb - Fatal编程技术网

Sql server 2008 MongoDB查询相关记录

Sql server 2008 MongoDB查询相关记录,sql-server-2008,node.js,mongodb,Sql Server 2008,Node.js,Mongodb,我有一个博客应用程序。我需要做一个MongoDB查询(SQL很好,我会翻译它),以获得博客中的特定帖子,以及在该帖子之前和之后立即发布的帖子 例如,鉴于这一职位清单: 12/01/13 - Foo 15/01/13 - Bar 17/01/13 - Baz 27/01/13 - Taz 如何编写查询以获取其中一个,例如Bar,和直接同级Foo和Baz 出于性能原因,我不想对数据库进行三种不同的查询 在我的应用程序中,我得到一篇如下的帖子: model.findOne({ date: {

我有一个博客应用程序。我需要做一个MongoDB查询(SQL很好,我会翻译它),以获得博客中的特定帖子,以及在该帖子之前和之后立即发布的帖子

例如,鉴于这一职位清单:

12/01/13 - Foo
15/01/13 - Bar
17/01/13 - Baz
27/01/13 - Taz
如何编写查询以获取其中一个,例如
Bar
和直接同级
Foo
Baz

出于性能原因,我不想对数据库进行三种不同的查询

在我的应用程序中,我得到一篇如下的帖子:

model.findOne({
    date: {
        $gte: new Date(2013, 0, 15),
        $lt: new Date(2013, 0, 15, 24)
    },
    slug: 'Bar'
}, function(result){
    return { entry: result };
});
这里有一种可能性(涉及两个查询,一个用于查找主要帖子,另一个用于查找最近的文档):

  • 将数据/帖子视为双链接列表
  • 您需要将引用ID存储为每个帖子文档(数组)中“上一篇”和“下一篇”帖子的链接。这使得插入变得更加复杂,但在过去某个地方按日期插入“新”博客文章似乎不太可能
  • 索引链接字段
  • 在链接字段中搜索具有主文档id的文档

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