键参数中的子字符串

时间:2018-07-26 08:26:53

标签: javascript couchdb

我正在我的CouchDB项目中,我想在其中创建数据库的特定视图。
事实证明,我的一个关键参数在其名称中有一个ID,但另一部分是唯一的。例如“ unique_ID_unique”:“值”。
因此,不建议使用暴力解决方案,例如更改名称和/或保存方式。

为清楚起见,每个条目(日期)的ID都不相同。 我试图通过使用正则表达式规则对其进行修改,但对于关键部分它返回 NULL

emit(doc[/_unique$/], doc['something.else']);  

有人知道为什么会这样吗?

P.S:昨天我已经有这样的问题了,但是由于我提供的信息不足,导致答案错误,因此我不得不将其删除。

1 个答案:

答案 0 :(得分:0)

假设您有一个函数可以从特定密钥中提取唯一密钥:

var key = "blabla_120391029301923_blabla";
var keySplitted = key.split("_"); //Value: ["blabla","120391029301923","blabla"]
var uniqueKey = keySplitted[2]; //Value: blabla

由此,您可以创建一个视图,该视图将映射每个文档并使用您的密钥对其进行索引。

function(doc){
  var keySplitted = doc._id.split("_");
  if(keySplitted.length == 3){
    emit(keySplitted[2]);
  }
}

以前的地图ID来自此:

  • evening_01012018_food
  • morning_02012018_musc
  • evening_01022018_food

对此:

  • 食物
  • 音乐
  • 食物

更新

通过离线讨论,我能够理解要索引的对象具有以下内容:

{
  "_id": "doc_1",
  "_rev": "1-89d017d9e5c82ee56d9beec2756fec99",
  "type": "googrtt",
  "ssrc_3685071425_send.bytesSent": "33621"
}

因此,对于本文档,必须拆分属性。

最终视图内容如下:

function (doc) {
  for(key in doc){
    var splitKey= key.split('_');
    if(splitKey.length === 3){
      emit(splitKey[2],doc[key]);
    }
  }
}