创建大量couchdb&x27;谁来存储评论?

创建大量couchdb&x27;谁来存储评论?,couchdb,Couchdb,我需要做一个消息应用程序,我想使用couchdb 消息文档如下所示: message = { 'from':'uuid1', 'to':'uuid2', 'message':'asd asd asd', 'date':1342643405.84 } 我需要过滤以获取针对用户的消息,并按日期进行分页 所以为了过滤,我创建了一个视图。。。发射([doc.from,doc.to],doc) 为了更好地进行分页,而不仅仅是跟踪密钥,我希望每天、每周或每月创建一个新的db来存储消

我需要做一个消息应用程序,我想使用couchdb

消息文档如下所示:

message = {
   'from':'uuid1',
   'to':'uuid2',
   'message':'asd asd asd',
   'date':1342643405.84
}
我需要过滤以获取针对用户的消息,并按日期进行分页

所以为了过滤,我创建了一个视图。。。发射([doc.from,doc.to],doc)

为了更好地进行分页,而不仅仅是跟踪密钥,我希望每天、每周或每月创建一个新的db来存储消息。数据库名称可以是这样的(这是按天):


通过这种方式,我可以只访问数据库的一部分,但我不知道这是个好主意还是个坏主意。

CouchDB构造索引(使用B树)的方式意味着,只要您正确地创建视图,就不必真正担心您所担心的问题

您需要使用日期作为正在发射的复合键中的第一个键来创建视图。对于要分页/分组/排序的日期类型,您需要一个单独的视图。因此,如果您希望能够选择每天、每周、每月和每年的文档,那么您将需要四个视图——每种不同类型的日期对应一个视图

只需确保将日期转换为可以按词汇进行排序/搜索/分组的格式即可。例如,您的每月视图可以是:

function(d) {
  if( d.from && d.to && d.date ) {
    var date = new Date( d.date ),
      month = ('0' + (1 + date.getMonth())).slice(-2),
      year = date.getYear();

    date_string = date.getFullYear() + '-' + month;

    emit( [ date_string, d.from, d.to ] );
  }
}

CouchDB构造索引的方式(使用B-树)意味着,只要您适当地创建视图,就不必担心您所担心的事情

您需要使用日期作为正在发射的复合键中的第一个键来创建视图。对于要分页/分组/排序的日期类型,您需要一个单独的视图。因此,如果您希望能够选择每天、每周、每月和每年的文档,那么您将需要四个视图——每种不同类型的日期对应一个视图

只需确保将日期转换为可以按词汇进行排序/搜索/分组的格式即可。例如,您的每月视图可以是:

function(d) {
  if( d.from && d.to && d.date ) {
    var date = new Date( d.date ),
      month = ('0' + (1 + date.getMonth())).slice(-2),
      year = date.getYear();

    date_string = date.getFullYear() + '-' + month;

    emit( [ date_string, d.from, d.to ] );
  }
}