Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
Python RejectionDB:使用唯一id在两周内创建行_Python_Rethinkdb_Reql - Fatal编程技术网

Python RejectionDB:使用唯一id在两周内创建行

Python RejectionDB:使用唯一id在两周内创建行,python,rethinkdb,reql,Python,Rethinkdb,Reql,我有一个表,其中的一些行如下所示: { "id": "12345" "created_date": Fri May 27 2016 22:06:25 GMT+00:00 , } { "id": "6789" "created_date": Mon May 30 2016 07:48:35 GMT+00:00 , } etc... 我试图首先筛选行,从今天开始不迟于两周前创建一行 然后,我试图通过只获取唯一的id(没有重复)来过滤,但仍然是最新的id 如果过滤效率更高,可以反向

我有一个表,其中的一些行如下所示:

{
  "id": "12345"
  "created_date": Fri May 27 2016 22:06:25 GMT+00:00 ,
} {
  "id": "6789"
  "created_date": Mon May 30 2016 07:48:35 GMT+00:00 ,
}

etc...
  • 我试图首先筛选行,从今天开始不迟于两周前创建一行

  • 然后,我试图通过只获取唯一的id(没有重复)来过滤,但仍然是最新的id

  • 如果过滤效率更高,可以反向进行过滤

    类似于此伪代码的内容:

    r.db().table().filter( r.time(r.row['created_date']) > r.now()-2_weeks).filter(latest-uniques-only)
    

    以下是实现预期结果的两个选项

    使用过滤器和组

    您可以使用以下查询执行此查找(代码使用Javascript API并通过Data Explorer在表上进行测试):

    如果
    _id
    字段不是唯一的,则此查询将返回过去两周内创建的每个
    _id
    的最新记录

    使用辅助索引

    为了使上述查询更有效/更高效,您可以在
    created\u date
    上放置一个索引,然后使用
    between()
    命令查找最近两周内创建的所有日期

    首先在日期字段上创建索引:

    r.table('the_table').indexCreate('created_date');
    
    然后您可以使用它更有效地筛选表

    r.table('the_table')
     .between(r.now().sub(86400*84), r.now(), { index: 'created_date'})
     .group('the_id')
      .orderBy(r.desc('created_date'))
      .pluck('the_id', 'created_date')
     .ungroup()
     .map((row) => row('reduction').nth(0))
    

    以下是实现预期结果的两个选项

    使用过滤器和组

    您可以使用以下查询执行此查找(代码使用Javascript API并通过Data Explorer在表上进行测试):

    如果
    _id
    字段不是唯一的,则此查询将返回过去两周内创建的每个
    _id
    的最新记录

    使用辅助索引

    为了使上述查询更有效/更高效,您可以在
    created\u date
    上放置一个索引,然后使用
    between()
    命令查找最近两周内创建的所有日期

    首先在日期字段上创建索引:

    r.table('the_table').indexCreate('created_date');
    
    然后您可以使用它更有效地筛选表

    r.table('the_table')
     .between(r.now().sub(86400*84), r.now(), { index: 'created_date'})
     .group('the_id')
      .orderBy(r.desc('created_date'))
      .pluck('the_id', 'created_date')
     .ungroup()
     .map((row) => row('reduction').nth(0))
    

    非常感谢您的回复。你能提供一个索引的例子吗?更新的答案包括这一点。非常感谢你的回复。你能提供一个索引的例子吗?更新的答案包括这一点。