couchdb - 如果 id 包含子字符串,则 CouchDB 中的 Map/reduce 获取一个字段
问题描述
我会解释:我有这个功能
function (doc) {
if(doc.MovieId == "1721")
emit(doc.Rating, 1);
}
但它返回给我一些不相关的文件(例如他们没有评级字段)。我的文档 _id 由 partitionName:id 组成,所以我想这样做,if(doc.MovieId == "1721" && doc._id.contains("ratings"){...}
但它不起作用。有没有办法做到这一点?
-----编辑 1----- 圆圈中的文档不相关。您需要 JSON 文档的架构吗?
-----编辑 2----- 以下文件不相关 1。
{
"_id": "movies : 1721",
"_rev": "1-d7e0e3c8152d6978073d280e0aef7457",
"MovieId": "1721",
"Title": "Titanic (1997)",
"Genres": [
"Drama",
"Romance"
]
}
2.
{
"_id": "tags : 1490",
"_rev": "1-14c20c9cfb3ee1964a298777f80333d5",
"MovieId": "1721",
"UserId": "474",
"Tag": "shipwreck",
"Timestamp": "1138031879"
}
3.
{
"_id": "tags : 2791",
"_rev": "1-e4d6c9573fcdae726a69d5fc6255de27",
"MovieId": "1721",
"UserId": "537",
"Tag": "romance",
"Timestamp": "1424141922"
}
像这样的文档是相关的:
{
"_id": "ratings : 31662",
"_rev": "1-446665286337faaf51e23e40b527ec2d",
"MovieId": "1721",
"UserId": "219",
"Rating": "0.5",
"Timestamp": "1214043346"
}
解决方案
以下视图应该只发出 _id 以“ratings :”开头的文档:
function (doc) {
var id_prefix = "ratings :";
if(doc._id.substr(0, id_prefix.length) === id_prefix && doc.MovieId == "1721")
emit(doc.Rating, 1);
}
推荐阅读
- batch-file - 通过批处理文件运行 C++ 编译器
- r - R RSQLite 找不到驱动程序 SQLite
- excel - 公式在excel中为多个连续行合并同一行范围内的非空值
- javascript - React Native:如何将应用程序状态的答案作为道具而不是卡片的内部状态传递
- python - 将日期和时间添加到 python 创建的文件
- microsoft-graph-api - Microsoft Graph API - Exchange Server 混合部署 - 找不到资源
- javascript - 仅使用花括号进行代码折叠?
- java - Java Spark - java.lang.OutOfMemoryError:超出 GC 开销限制 - 大型数据集
- reactjs - 带布尔值的 useState
- python - 为什么我的 ValidationErrors 不再呈现?