Key 参数中的子串
Substring in Key parameter
我正在处理我的 CouchDB 项目,我想在其中为我的数据库创建一个特定的视图。
事实证明,我的一个关键参数的名称中有一个 ID,但另一部分是唯一的。例如 "unique_ID_unique":"Value".
因此,更改名称 and/or 如何保存之类的蛮力解决方案不是首选。
为了清楚起见,每个条目(日期)的 ID 都不同。
我尝试使用正则表达式规则修改它,但关键部分是 returns NULL 。
emit(doc[/_unique$/], doc['something.else']);
有人知道为什么会这样吗?
P.S: 我昨天已经有这样的问题了,但是由于我给的信息不够,导致回答错误,只好删了。
假设您有一个从特定密钥中提取唯一密钥的函数:
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]);
}
}
}
我正在处理我的 CouchDB 项目,我想在其中为我的数据库创建一个特定的视图。
事实证明,我的一个关键参数的名称中有一个 ID,但另一部分是唯一的。例如 "unique_ID_unique":"Value".
因此,更改名称 and/or 如何保存之类的蛮力解决方案不是首选。
为了清楚起见,每个条目(日期)的 ID 都不同。 我尝试使用正则表达式规则修改它,但关键部分是 returns NULL 。
emit(doc[/_unique$/], doc['something.else']);
有人知道为什么会这样吗?
P.S: 我昨天已经有这样的问题了,但是由于我给的信息不够,导致回答错误,只好删了。
假设您有一个从特定密钥中提取唯一密钥的函数:
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]);
}
}
}