javascript - 有没有办法在 CouchDB 中过滤子文档?

标签 javascript couchdb

我想从 CouchDB 的数据库中过滤子文档。数据库中的示例文档如下:

{
    "Things": {
        "Thing:1": {
            "Number":1
            "Type": "TI"
        },
        "Thing:2": {
            "Number":2,
            "Type": "TI"
        }
    },
    "Type": "TD"
}

是否可以创建一个与此类似的过滤子文档的 View ?

for(key in Object.keys(Things)) {
    return Things[key].Number == 2;
}

最佳答案

是的,使用 map 功能很容易。例如

function (doc) {
   Object.keys(doc.Things).forEach(function(key) {
    if(doc.Things[key].Number === 2) emit(doc._id, 1);
   });
}

这适用于 CouchDB 2.3。 Fauxton 使创建和测试 View 变得非常容易。

View _design/thing/_view/thing 的设计文档看起来像这样

{
  "_id": "_design/thing",     
  "views": {
    "thing": {
      "map": "function (doc) {\n   Object.keys(doc.Things).forEach(function(key) {\n    if(doc.Things[key].Number === 2) emit(doc._id, 1);\n});\n\n}"
    }
  },
  "language": "javascript"
}

关于javascript - 有没有办法在 CouchDB 中过滤子文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59867265/

相关文章:

javascript - 如何循环遍历对象的对象?

javascript - jQuery 可调整大小的奇怪行为

couchdb - 仅计算 couchdb 唯一的行

javascript - CouchDB 在reduce 函数中获取日期统计信息

javascript - 从 Javascript ASP.NET 调用 [HTTPPost]

javascript - 仅验证类型单词英语或波斯语或数字?

performance - CouchDB 中允许的最大 View 是多少

windows - CouchDB在Windows 2008 R2 Standard上崩溃,出现os_mon错误

Javascript/Node 和计时

android - 如何在cloudant查询中对日期进行排序